C# 在orderby中使用两个可为null的属性时,是否需要进行null检查?
我有一个包含两个属性的列表,Lastname和Firstname。它们可以为空,并且应该为空 这是我的代码行: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
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)