如何在Linq中获得多个列

时间:2011-04-09 07:10:15

标签: c# linq-to-entities

这是我的代码:

firstAnswer = p.Answers.Select(z => z.vountcount, z.isSelected).FirstOrDefault()

在select语句中,它返回语法错误。我试图获得更多的一列。

2 个答案:

答案 0 :(得分:3)

var firstAnswer = p.Answers.FirstOrDefault().Select(new { VountCount = z.vountcount, IsSelected = z.isSelected });

您必须指定typeVar是允许您实例化anonymous type的关键字。

答案 1 :(得分:1)

您必须创建一个类型或使用匿名类型来捕获该结果:

匿名类型:

var firstAnswer = p.Answers.Select(z => new { vountcount = z.vountcount, isSelected = z.isSelected }).FirstOrDefault();

显式命名在大多数情况下是可选的。 在此处使用var关键字可确保您可以分配该匿名结果。如果你想把这个结果交给某个方法,那么匿名类型就会变得很困难。

专用类型:

public class ReducedAnswer
{
    public int vountcount { get; set; }
    public bool isSelected { get; set; }

    public ReducedAnswer()
    {
    }
}

ReducedAnswer firstAnswer = p.Answers.Select(z => new ReducedAnswer { vountcount = z.vountcount, isSelected = z.isSelected }).FirstOrDefault();

保持接近典型的LINQ模型类和命名。请注意firstAnswer前面的类型的使用。您也可以在此处使用var