Linq查询检查列表包含空字符串,然后检查是否为null

oipij1gg  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(85)

我有一个列表,它可能包含也可能不包含空字符串。在这种情况下,我想创建一个linq查询来检查where子句中的null,同时检查列表中的其他值,并将它们添加到where子句中。
这是我现在的linq格式,它不检查null:

if (myList.Count > 0)
{
    objects = objects.Where(a => myList.Contains(a.Items));
}

字符串
这是我所期望的行为,但想知道是否有一种方法可以将其转换为linq格式或更好的方法?

foreach(var listItem in myList)
{
   if (string.IsNullOrEmpty(listItem))
   {
       //This would only be hit once as myList has a distinct list of values
       objects = objects.Where(a => a.Items == null);
   }
   else
   {
       objects = objects.Where(a => a.Items == listItem);
   }
}

8tntrjer

8tntrjer1#

我想你可以这样写:

objects = objects.Where(o => 
    myList.Any(l =>
        string.IsNullOrEmpty(l) ? o.items == null : o.items == l
    )
)

字符串

qhhrdooz

qhhrdooz2#

这是最适合我的解决方案:

if (myList.Count > 0)
{
    if(myList.Contains(string.Empty))
    {
        objects = objects.Where(a => a.Items == null || myList.Contains(a.Items));
    }
    else
    {
        objects = objects.Where(a => a.Items != null && myList.Contains(a.Items));
    }
}

字符串

相关问题