2

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

这是我的查询:

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

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

string name = result.Single().CustomName;

当然,我的真实代码有更多的属性,对于每个属性,我每次都必须调用 .Single()。有没有更简单的方法可以在这里访问 CustomName?

4

3 回答 3

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.
}
于 2009-08-27T13:07:13.173 回答
3

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

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

此外,每次调用Single()它都会执行查询。您应该获取一次价值并在需要的任何地方使用它。只要你使用var你应该没问题,你只是不能从方法中返回那个匿名类型。

于 2009-08-27T13:04:22.393 回答
2

你可以试试

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

然后你可以访问你的财产

var foo = result.CustomName; // etc
于 2009-08-27T13:15:40.313 回答