Linq:附加参数

时间:2017-06-26 07:59:56

标签: c# .net linq

我有以下一行:

orderBaseData.Single(o => o.Id == order.Id).OrderMessages.Count;

我想过滤一下这个。每个OrderMessage都有一个名为hideFromUser的变量,我想得到OrderMessages的计数,其中只将其设置为FALSE。

提前致谢,

鲍勃

2 个答案:

答案 0 :(得分:1)

使用OrderMessages上的位置

orderBaseData
  .Single(o => o.Id == order.Id)
  .OrderMessages
     .Where(x => !x.hideFromUser)
     .Count();

答案 1 :(得分:0)

为了在单个查询中有效地检索数据,您可以使用以下内容,而不是依赖于LazyLoading OrderMessages:

orderBaseData
    .Where(o => o.Id == order.Id)
    .Select(o => o.OrderMessages.Where(x => !x.hideFromUser).Count())
    .Single();

当orderBaseData是针对数据库的某些IQueryable时,这种方法非常有趣。如果所有数据都已经存储在内存中,那么它并不比其他方法更好或更差。