我有一个单一结果的查询。结果是anonymouse类型。我如何使用访问类型,所以我不必每次都使用query.Single()?
这是我的疑问:
var result = from row in db.Table
select new { CustomName = row.RowName };
这就是我现在使用它的方式:
string name = result.Single().CustomName;
当然我的真实代码有很多属性,每次我必须调用的每个属性.Single()。有没有更简单的方法来访问CustomName?
答案 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