从Linq To Sql中的匿名类型的查询中获取单个结果

时间:2009-08-27 13:01:22

标签: .net linq linq-to-sql anonymous-types

我有一个单一结果的查询。结果是anonymouse类型。我如何使用访问类型,所以我不必每次都使用query.Single()?

这是我的疑问:

var result = from row in db.Table 
select new { CustomName = row.RowName };

这就是我现在使用它的方式:

string name = result.Single().CustomName;

当然我的真实代码有很多属性,每次我必须调用的每个属性.Single()。有没有更简单的方法来访问CustomName?

3 个答案:

答案 0 :(得分:4)

你可以说

var result = (from row in db.Table
              select new { CustomName = row.RowName }).Single();

string name = result.CustomName;
// etc.

但最好的方法可能是将结果封装到真正的非匿名类中。然后你可以说

MyClass result = (from row in db.Table
                  select new MyClass() { CustomName = row.RowName }).Single();

string name = result.CustomName;
// etc.

例如,你可以在这里

class MyClass {
    public string CustomName { get; set; }
    // etc.
}

答案 1 :(得分:3)

您是否尝试将Single结果分配给变量?

var singleResult = result.Single();
string name = singleResult.CustomName;
// etc...

此外,每次调用Single()时,它都会执行查询。您应该抓取一次值,并在需要的地方使用它。只要你使用var就可以了,你就是不能从方法中返回那个匿名类型。

答案 2 :(得分:2)

你可以尝试

var result = (from row in db.Table 
select new { CustomName = row.RowName }).Single();

然后您可以使用

访问您的房产
var foo = result.CustomName; // etc