繁体   English   中英

Linq - 检查数组中存在的任何值是否存在于数据库表中

[英]Linq - check if the any of the values present in an array exists in the database table

我正在探索是否有一种方法可以在不使用循环的情况下检查数组中存在的任何值是否存在于表中。

因此,即使表中存在 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;
        }
    }
}

像这样:

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 到 sql 会下载数据并在本地翻找 - https://docs.microsoft.com/en-ef//language-reference的“存储执行”部分执行有一些信息(整个文档值得一读,实际上 - 延迟执行也是一个常见的问题)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM