我有一个包含以下属性的类:
public class Suborder
{
public List<OrderLineItem> OrderLineItemList { get; set; }
public string ProviderCode { get; set; }
}
public class OrderLineItem
{
public List<OrderLineItem> BundleComponentList { get; set; }
public string Product { get; set; }
}
我想遍历BundleComponentList以检查其任何项目的Product值是否等于Shoes。我尝试过这样,但是出错了
if (suborder.OrderLineItemList.Any(x => x.Product == "Shoes") || suborder.OrderLineItemList.Where(x=>x.BundleComponentList.Any(y=>y.Product == "Shoes")))
运算符'||'不能应用于类型为'bool'的操作数,并且 'System.Collections.Generic.IEnumerable
我的LINQ有什么问题?
答案 0 :(得分:3)
使用const printWindow = window.open('', 'Print', 'height=600,width=800');
代替Any
,因为Where
返回一个序列,而不是Where
。
bool
答案 1 :(得分:0)
Where()
不会返回布尔值,而是返回IEnumerable
,因此不能在if子句中使用。您应使用Any()
。
if (suborder.OrderLineItemList.Any(x => x.Product == "Shoes") ||
suborder.OrderLineItemList.Any(x => x.BundleComponentList.Any(y => y.Product == "Shoes")))
还请注意,上述if子句假定子顺序永远不会为空。
答案 2 :(得分:0)
我会将lambda与LINQ结合使用。更容易阅读和查看正在发生的事情:
var a = [1,2,3,4]+[5,6,7,8];
var b = [1,2,3,4]-[5,6,7,8];