Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;或;linq查询的where子句中的条件返回null_C#_.net_Linq - Fatal编程技术网

C# &引用;或;linq查询的where子句中的条件返回null

C# &引用;或;linq查询的where子句中的条件返回null,c#,.net,linq,C#,.net,Linq,以下代码在单独执行时正确执行,但包含了or条件 要在单个查询中同时使用这两个条件,请返回null userSessionList = userSessionList.Where(u => (u.User.FirstName.ToLower().Contains(name)) || (u.User.LastName.ToLower().Contains(name)) ) .ToList(); 您可以使用和p

以下代码在单独执行时正确执行,但包含了or条件 要在单个查询中同时使用这两个条件,请返回null

userSessionList = userSessionList.Where(u => 
            (u.User.FirstName.ToLower().Contains(name)) || 
            (u.User.LastName.ToLower().Contains(name))
        )
        .ToList();
您可以使用和pass作为要使用的搜索类型:

culture.CompareInfo.IndexOf(u.User.LastName, name, CompareOptions.IgnoreCase) >= 0

试试这个,看看它是否有效:

   userSessionList = userSessionList.Where(u => 
        (u.User != null && u.User.FirstName != null && u.User.FirstName.ToLower().Contains(name)) || 
        (u.User != null && u.User.LastName != null && u.User.LastName.ToLower().Contains(name))
    )
    .ToList();
出于测试目的,您还可以在同一执行中运行以下命令并查看结果

    var userSessionList1 = userSessionList.Where(u => 
        (u.User.FirstName.ToLower().Contains(name))
    )
    .ToList();

    var userSessionList2 = userSessionList.Where(u => 
        (u.User.FirstName.ToLower().Contains(name))
    )
    .ToList();

    var userSessionListBoth = userSessionList.Where(u => 
        (u.User.FirstName.ToLower().Contains(name)) || 
        (u.User.LastName.ToLower().Contains(name))
    )
    .ToList();
并检查三个不同的列表。我认为,因为您正在覆盖现有列表,可能是您在以前的查询中再次这样做了,这就是为什么会出现这种奇怪的情况。

使用


|
无法筛选出之前存在的匹配项。它只能添加匹配项。它可能会引入一个异常,但该异常可能会被不做任何操作的
catch()
隐藏,例如
u.User.LastName.ToLower()
上的
NullReferenceException
。是的,我正在获取对象NullReferenceException。请您建议如何准确地编写此查询。
是的,我正在获取对象NullReferenceException
-如果您在问题中提到这一点,而不是说查询返回null,那将非常有帮助。谢谢您,但我关心的是返回与给定值匹配的用户列表condition@ManjunathM.R这是为了向您展示如何正确执行此操作,而不涉及
ToLower
。感谢您对空条件进行了大量检查。
userSessionList = userSessionList.Where(u => 
            (u.User?.FirstName?.ToLower().Contains(name) == true) || 
            (u.User?.LastName?.ToLower().Contains(name) == true)
        )
        .ToList();