关于c#:Linq语法 – 选择多个列

Linq Syntax - Selecting multiple columns

这是我对实体模型使用的LINQ语法

1
2
3
4
5
IQueryable<string> objEmployee = null;

objEmployee = from res in _db.EMPLOYEEs
              where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
              select res.EMAIL;

如何选择多列?就像我也想选择res.id一样。我怎样才能收到这些?我想iqueryable不起作用。这叫做linq to sql-对吧?


如其他答案所示,您需要使用匿名类型。

就语法而言,我个人更喜欢方法链接。链接等效方法为:

1
2
3
var employee = _db.EMPLOYEEs
    .Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo)
    .Select(x => new { x.EMAIL, x.ID });

在编译时,声明性LINQ语法将转换为类似于此的方法调用链。

更新

如果您想要整个对象,那么您只需省略对Select()的调用,即

1
2
var employee = _db.EMPLOYEEs
    .Where(x => x.EMAIL == givenInfo || x.USER_NAME == givenInfo);

可以使用匿名类型,例如:

1
2
3
  var empData = from res in _db.EMPLOYEEs
                where res.EMAIL == givenInfo || res.USER_NAME == givenInfo
                select new { res.EMAIL, res.USER_NAME };


1
2
3
 var employee =  (from res in _db.EMPLOYEEs
 where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
 select new {res.EMAIL, res.USERNAME} );

或者你可以使用

1
2
3
 var employee =  (from res in _db.EMPLOYEEs
 where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo)
 select new {email=res.EMAIL, username=res.USERNAME} );

说明:

  • 从数据库中选择员工作为资源。

  • 根据Where条件筛选员工详细信息。

  • 通过使用new创建匿名对象,从Employee对象中选择必需字段。