LINQ动态查询与Where子句

时间:2016-03-07 17:47:50

标签: c# linq

我需要使用LINQ实现以下查询:

SELECT * FROM Products
WHERE name = 'FOO' AND ((month = 1 AND week = 1) OR (month = 1 AND week = 2) OR...);

事情是月 - 周对的数量是动态的。

月份和星期的参数是成对给出的。例如:1-1,1-2。 然后我尝试将它们与' - '分开。但我无法找到办法进行查询。我尝试过以下方法:

foreach (var p in periods)
     query = query.Where(x => x.Week == p.Week && x.Month == p.Month); // Won't work because the Where will be added as 'AND'

我知道如果参数是静态的,我可以做一些事情:

query.Where(x => (x.Week == 1 && x.Month == 2) || (x.Week == 1 && x.Month == 1));

但由于它们充满活力,我没有看到这样做的方法。

我怎样才能做到这一点?感谢。

1 个答案:

答案 0 :(得分:1)

如果[{1}},week的参数存储如下:

month

然后你可以使用:

string[] parameters = new string[] {"1-1", "1-2"};

以上linq查询将返回var result = products.Where(x => x.name == "FOO" && parameters.Contains(x.week.ToString() + "-" + x.month.ToString())); 中的任何行:

  • products
  • name = "FOO"对包含在week - month数组week - month对的任何中。