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} ); 

说明:

  1. 从db中select员工作为res。

  2. 根据地点条件过滤员工详细信息。

  3. 通过使用new {}创buildAnonymous对象来从employee对象中select必需的字段