Skip to main content
 首页 » 编程设计

c#之使用 LINQ 从嵌套集合中获取特定值

2024年01月29日26xxx_UU

我有一组“产品”对象,每个对象都包含一组 yield 对象。见下文:

<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”的“医疗” yield 值:

<%: 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 

如何让它返回我想要的实际值?

请您参考如下方法:

如果您知道只有一个(保证),则添加 .Single() - 如果可能没有/一些而您只想要第一个,请添加 .FirstOrDefault()(没有结果则返回null)