Linq语法 – select多个列
这是我用于我的实体模型的Linq语法
IQueryable<string> objEmployee = null; objEmployee = from res in _db.EMPLOYEEs where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo) select res.EMAIL;
我怎样才能select多个列? 就像我想selectres.ID也。 我怎样才能收到这些? IQueryable将无法正常工作,我认为。 这就是所谓的Linq to SQL – 对吧?
正如其他答案已经表明,你需要使用匿名types。
就语法而言,我个人更喜欢方法链接。 链式等价的方法是:
var employee = _db.EMPLOYEEs .Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo) .Select(x => new { x.EMAIL, x.ID });
AFAIK,声明式的LINQ语法在编译时被转换成类似于这个的方法调用链。
UPDATE
如果你想要整个对象,那么你只需要省略Select()
的调用,即
var employee = _db.EMPLOYEEs .Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo);
您可以使用匿名types,例如:
var empData = from res in _db.EMPLOYEEs where res.EMAIL == givenInfo || res.USER_NAME == givenInfo select new { res.EMAIL, res.USER_NAME };
var employee = (from res in _db.EMPLOYEEs where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo) select new {res.EMAIL, res.USERNAME} );
或者你可以使用
var employee = (from res in _db.EMPLOYEEs where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo) select new {email=res.EMAIL, username=res.USERNAME} );
说明:
-
从db中select员工作为res。
-
根据地点条件过滤员工详细信息。
-
通过使用new {}创buildAnonymous对象来从employee对象中select必需的字段