我的代码是:
List<Benutzer> users = (from a in dc.Benutzer
select a).ToList();
Run Code Online (Sandbox Code Playgroud)
我需要这个代码,但我只想在"Benutzer"-Table中选择20个列中的3个.那是什么语法?
Jon*_*eet 24
这是一个查询表达式:
var users = (from a in dc.Benutzer
select new { a.Name, a.Age, a.Occupation }).ToList();
Run Code Online (Sandbox Code Playgroud)
或者用点符号表示:
var users = dc.Benutzer.Select(a => new { a.Name, a.Age, a.Occupation })
.ToList();
Run Code Online (Sandbox Code Playgroud)
请注意,这将返回匿名类型的列表,而不是实例的列表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();
Run Code Online (Sandbox Code Playgroud)
即使用匿名类型作为DTO.请注意,返回的Benutzer对象不会与上下文关联.