【问题标题】:Getting single result from a query with anonymous types in Linq To Sql从 Linq To Sql 中的匿名类型查询中获取单个结果
【发布时间】:2009-08-27 13:01:22
【问题描述】:
我有一个单一结果的查询。结果是匿名类型。如何使用访问类型,这样我就不必每次都使用 query.Single()?
这是我的查询:
var result = from row in db.Table
select new { CustomName = row.RowName };
这就是我现在使用它的方式:
string name = result.Single().CustomName;
当然,我的真实代码有更多属性,对于每个属性,我每次都必须调用 .Single()。有没有更简单的方法可以在这里访问 CustomName?
【问题讨论】:
标签:
.net
linq
linq-to-sql
anonymous-types
【解决方案1】:
你可以说
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.
}
【解决方案2】:
您是否尝试将 Single 结果分配给变量?
var singleResult = result.Single();
string name = singleResult.CustomName;
// etc...
此外,每次调用Single() 时,它都会执行查询。您应该获取一次价值并在需要的任何地方使用它。只要您使用var 就可以了,只是不能从方法中返回该匿名类型。
【解决方案3】:
你可以试试
var result = (from row in db.Table
select new { CustomName = row.RowName }).Single();
然后您可以使用
访问您的财产
var foo = result.CustomName; // etc