我需要使用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));
但由于它们充满活力,我没有看到这样做的方法。
我怎样才能做到这一点?感谢。
答案 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
对的任何中。