简单的Linq问题:如何选择多个列?

Kov*_*ovu 10 sql linq select

我的代码是:

            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对象不会与上下文关联.

  • "typisite"是什么意思? (2认同)
  • 如果您为Benutzer提供所需属性的无参数构造函数和公共setter,则可以.或者和构造函数符合相同的目的. (2认同)