使用LINQ选择多个连续元素

10

我的代码如下

var users = MyTable.AsEnumerable()
                      .Select(x => new { x.Field<string>("Col1"),x.Field<string>  
                       ("Col2")}).ToList();

编译时出现以下错误:

无效的匿名类型成员声明。匿名类型成员必须使用成员赋值、简单名称或成员访问方式声明。

3个回答

18

你需要为匿名类型中的每个字段指定一个名称

var users = MyTable.AsEnumerable()
  .Select(x => 
     new { Col1 = x.Field<string>("Col1"), Col2 = x.Field<string>("Col2")})
  .ToList();

只有当表达式本身是编译器可以使用的简单名称时,才可以省略匿名类型字段的名称。例如,如果表达式是字段或属性,则可以省略名称。在这种情况下,表达式是一个通用方法调用,并且没有名称,编译器将使用。


2

试试这个:

var users = MyTable.AsEnumerable()
                      .Select(x => new
                      {
                        Col1 = x.Field<string>("Col1"),
                        Col2 = x.Field<string>("Col2")})
                        .ToList();

你能解释一下为什么吗? - TalentTuner

2
你可以使用这个。
var users = MyTable.AsEnumerable()
                      .Select(x => new
                      {
                        Col1 = x.Field<string>("Col1"),
                        Col2 = x.Field<string>("Col2")})
                        .ToList();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接