我有一组“产品”对象,每个对象都包含一组福利对象。见下文:
<Products>
<Product ID="454">
<ProductName>Economy</ProductName>
<Benefits>
<Benefit>
<Name>Medical</Name>
<Value>5000000</Value>
<Excess>100</Excess>
</Benefit>
<Benefit>
<Name>Emergency</Name>
<Value>350</Value>
<Excess>100</Excess>
</Benefit>
</Product>
</Products>
我正在尝试创建LINQ查询以获取产品“454”的“医疗”福利值:
<%: Model.Products.Where(x => x.ProductId == "454").SelectMany(p => p.Benefits).Where(b => b.Name == "Medical").Select(v => v.Value.ToString()) %>
然而,这只会返回:
System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Domain.Entities.Benefit,System.String] System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Domain.Entities.Benefit,System.String] System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Domain.Entities.Benefit,System.String] System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Domain.Entities.Benefit,System.String
如何让它返回我之后的实际值?
答案 0 :(得分:4)
如果您知道只有一个(保证),那么添加.Single()
- 如果可能没有/某些而您只想要第一个,请添加.FirstOrDefault()
(如果没有结果则返回null )
答案 1 :(得分:2)
试试这个
Model.Products
.Where(p => p.ID == 454)
.SelectMany(p => p.Benefits)
.Where(b => b.Name == "Medical")
.Single()
.Value.ToString();
答案 2 :(得分:0)
试试这个:
var val = employees.Where(p => p.ProductId == 454).FirstOrDefault().Benefits.Select(b => b.Value).FirstOrDefault();
或
var benefits_value = employees.Where(p => p.ProductId == 454).Single().Benefits.Select(b => b.Value).Single();