Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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# 在orderby中使用两个可为null的属性时,是否需要进行null检查?_C#_Linq - Fatal编程技术网

C# 在orderby中使用两个可为null的属性时,是否需要进行null检查?

C# 在orderby中使用两个可为null的属性时,是否需要进行null检查?,c#,linq,C#,Linq,我有一个包含两个属性的列表,Lastname和Firstname。它们可以为空,并且应该为空 这是我的代码行: return memberlist.OrderBy(x => x.LastName).ThenBy(x => x.Firstname); 我的问题是,如果Lastname为null,它会运行ThenBy()吗?否则我需要创建一个null检查?我想确保它按Lastname排序,如果为null,则按Firstname排序 假设我有一个如下列表: var data = new

我有一个包含两个属性的列表,Lastname和Firstname。它们可以为空,并且应该为空

这是我的代码行:

return memberlist.OrderBy(x => x.LastName).ThenBy(x => x.Firstname);
我的问题是,如果Lastname为null,它会运行ThenBy()吗?否则我需要创建一个null检查?我想确保它按Lastname排序,如果为null,则按Firstname排序

假设我有一个如下列表:

var data = new List<Member>
{
    new Member { FirstName = "null", LastName = "A" },
    new Member { FirstName = "B", LastName = null },
    new Member { FirstName = "A", LastName = null },
    new Member { FirstName = null , LastName = "B" },
    new Member { FirstName = "A" , LastName = "B" },
    new Member { FirstName = "B" , LastName = "A" },
};
A
A
A
B
B
B

var result = data.OrderBy(x => x.LastName).ThenBy(x => x.FirstName);

是的,它将运行
ThenBy()

基本上,所有具有
null
LastName
属性的项目都将按
FirstName
排序

OrderBy()
null
值放在非null值之前

在以下示例中,
result
按声明的顺序返回项目:

var data = new List<Member>
{
    new Member { FirstName = "A", LastName = null },
    new Member { FirstName = "B", LastName = null },
    new Member { FirstName = "A", LastName = "NotNull" },
    new Member { FirstName = "B", LastName = "NotNull" }
};

var result = data.OrderBy(x => x.LastName).ThenBy(x => x.FirstName);

你试过了吗?在成员列表中插入null应该不会太难……但是如果我想要A、A、B、B而不是A、B、A、B呢?在这种情况下,
data.OrderBy(x=>x.FirstName)。然后是by(x=>x.LastName)
可以展开您的问题,给出一个具有所需输出的示例输入吗?然后我可以进行适当的编辑。
var result = data.OrderBy(x => string.IsNullOrWhiteSpace(x.LastName) ? x.FirstName : x.LastName)
                 .ThenBy(x => x.FirstName)