我的代码是:
List<Benutzer> users = (from a in dc.Benutzer
select a).ToList();
我需要此代码,但我只想在“Benutzer”表中选择 20 列中的 3 列。
它的语法是什么?
最佳答案
这是一个查询表达式:
var users = (from a in dc.Benutzer
select new { a.Name, a.Age, a.Occupation }).ToList();
或点符号:
var users = dc.Benutzer.Select(a => new { a.Name, a.Age, a.Occupation })
.ToList();
请注意,这将返回一个 anonymous type 的列表。而不是
Benutzer
的实例.我个人更喜欢这种方法而不是创建部分填充实例的列表,因为任何处理部分实例的人都需要检查它们是否来自以找出真正存在的内容。编辑:如果你真的想构建
Benutzer
的实例,并且 LINQ 不允许您在查询中这样做(我不知道为什么),您总是可以这样做:List<Benutzer> users = dc.Benutzer
.Select(a => new { a.Name, a.Age, a.Occupation })
.AsEnumerable() // Forces the rest of the query to execute locally
.Select(x => new Benutzer { Name = x.Name, Age = x.Age,
Occupation = x.Occupation })
.ToList();
即使用匿名类型作为 DTO。注意返回的
Benutzer
对象不会与上下文相关联。
关于sql - 简单的 Linq 问题 : How to select more than one column?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1542611/