使用包含字符串列表?

时间:2017-09-21 07:10:18

标签: c# linq

我有以下代码

var project = db.Projects.FirstOrDefault(x => projectIds.Contains(x.ProjectId));

如果projectIdsList<string>包含&#34; 1234567&#34;,而x.ProjectId&#34; 1234&#34; ,则将返回项目ProjectId 1234

如果“&#39; ProjectId &#34; 1234567&#34;

感谢您的支持!

3 个答案:

答案 0 :(得分:3)

Contains实际上在其中查找子字符串,您需要完全匹配,因此您可以尝试使用==运算符,如:

var project = db.Projects.FirstOrDefault(x => projectIds.Any(id=> id ==x.ProjectId))

现在确保匹配其中的完整字符串值。

答案 1 :(得分:0)

包含像通配符一样的SQL,以获得您需要使用的确切结果。任何扩展名而不是包含。请参阅示例以了解。

string[] x = { "abcd", "abc" };
string[] y = { "abcd", "abc", "abcde" };
var result= x.FirstOrDefault(a => y.Any(b => b == a));

result=abcd

<强>答案

var result = db.Projects.FirstOrDefault(x => projectIds.Any(p=> p==x.ProjectId))

答案 2 :(得分:-1)

我不会用

var project = db.Projects.FirstOrDefault(x => projectIds.Any(id=> id ==x.ProjectId))

string.Equals是出于某种原因,

var project = db.Projects.FirstOrDefault(x => projectIds.Any(id=> id.Equals(x.ProjectId))

然后在将来,您可以包含它所带来的所有覆盖,例如忽略大小写和文化。在你的情况下,文化可能是值得的。例如,如果韩国的Windows正在运行您的程序。