创建一个LINQ查询比较数组

本文关键字:LINQ 查询 比较 数组 一个 创建 | 更新日期: 2023-09-27 18:00:10

我是LINQ的新手,我正在搜索一个SQL视图,该视图有一个名为"Readers"的列,其中包含几个用"#"分隔的组名(如"Administrators#HR group#Employees group")。有了用户组的列表,我需要提取Readers至少包含一个用户组的所有记录。换句话说,用户必须只看到属于他的那些记录。

我找到了这个解决方案,但我认为它效率极低:

private List<vwFax>getmyFaxes(List<string> myGroups)
{
    var myFax = db.vwFax.AsQueryable();
    var res = db.vwFax.AsQueryable();
    List<vwFax> outRes= new List<vwFax>();
    foreach (string elem in myGroups)
    {
        res = (from a in myFax
                where a.Readers.Contains(elem)
                select a); 
        if(res.Count() > 0)
        {
            outRes.AddRange(res);
        }               
    }
    return outRes.ToList();
}

请帮忙吗?

创建一个LINQ查询比较数组

基本上,您在以下查询中所说的是:对于myFax中的每个项目,仅当该item.Readers包含myGroups 中的Any(至少1)个项目时,才使用它

outRes = db.myFax.Where(item => myGroups.Any(grp => item.Readers.Contains(grp)));

以及在查询语法中:

outRes = from item in db.myFax
         where myGroups.Any(grp => item.Readers.Contains(grp))
         select item;