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语法将转换为类似于此的方法调用链。
更新
如果您想要整个对象,那么您只需省略对
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对象中选择必需字段。