我有以下代码
var project = db.Projects.FirstOrDefault(x => projectIds.Contains(x.ProjectId));
如果projectIds
是List<string>
包含&#34; 1234567&#34;,而x.ProjectId
是&#34; 1234&#34; ,则将返回项目ProjectId
1234 。
如果“&#39; ProjectId
&#34; 1234567&#34; ?
感谢您的支持!
答案 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正在运行您的程序。