linq' where'和'或'操作者

时间:2017-06-24 08:51:27

标签: c# linq

我有一个结果视图的多个结果,现在我正在尝试定义一个linq语句,其中包含多个未知值'或'操作

我就是这样做的

            for (int b = 0; b < result3.Count(); b++)
            {
                int value = result3[b].category_id;
                query4 = query4.Where(p => p.category_id == value ).OrderBy(p => p.sort_order);
                tempData.Add(value);
            }

然而,结果是什么,这是&#39;和&#39;条款,我想创建一个&#39;或&#39;运营商,有可能吗?

1 个答案:

答案 0 :(得分:3)

此处无需显式循环

  var ids = result3.Where(x => x.category_id);
  query4 = query4.Where(x => ids.Contains(x.category_id))
  tempData = query4.Select(z => z.category_id)
                   .OrderBy(c => c.sort_order);

这可能会给你循环中预期的“OR”输出。但是, tempData 变量包含与 var ids 中提取的完全相同的值,但只是已排序,因此,如果 result3 query4 是相同类型T的可枚举,然后您可以在 query4 之前设置 tempData 并使用它来过滤query4。

  var tempData = result3.Where(x => x.category_id)
                        .OrderBy(c => c.sort_order)
                        .Select(p => p.category_id);
  query4 = query4.Where(x => tempData.Contains(x.category_id))