我正在探索是否有一种方法可以在不使用循环的情况下检查表中是否存在数组中的任何值。
因此,即使表中存在1个值,该方法也应返回true,如果不存在任何值,则应返回默认false。
我在想像下面,下面的代码不是一个可行的想法,所以想检查是否有一种有效的方法来实现这一目标。
public bool CheckTable(string strList)
{
bool IsPresent = False;
String[] Arr = strList.split(',');
foreach(string str in Arr)
{
var x = DBContext.TableEmployees.where(e => e.Location == str).select(e => e.Location);
if(x == null)
{
isPresent = false;
}
else
{
isPresent = true;
}
}
}
答案 0 :(得分:1)
赞:
public bool CheckTable(string strList)
{
string[] strs = strList.Split(',');
return DBContext.TableEmployees.Any(e => strs.Contains(e.Location));
}
阅读https://www.microsoftpressstore.com/articles/article.aspx?p=2225065&seqNum=4以获得有关IN / EXISTS以及LINQ表达式如何映射到它们的更多背景知识。
使用LINQ时,请始终牢记明智的做法:如果无法理解您的表达式并将其完全转换为sql,则表达式可能无法在服务器上完全运行。有时LINQ to sql会在本地下载数据并通过rummage-https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/ef/language-reference/query-execution的“存储执行”部分包含一些信息(整个文档值得阅读,实际上-延迟执行也是常见的陷阱)