gpt4 book ai didi

c# - 当列表具有空值时,List.Sort() 失败

转载 作者:行者123 更新时间:2023-11-30 16:25:01 28 4
gpt4 key购买 nike

我有一个用户控件,其中网格使用 ObjectDataSource 获取数据。网格中的所有列都是可排序的。如果用户单击特定的列名称,列表将根据该列进行排序 (List.Sort(sortColumn))。

当其中一列的字段中有空白/空值时,我遇到了一个问题。当 strA/strB 为空或两者都为空时,比较行 strA.CompareTo(strB) 失败并显示“对象引用未设置到对象的实例”。

但是,我为 strA 和 strB 包含了 !string.IsNullOrEmpty() 以避免空引用异常。它仍然没有对网格进行排序。

代码片段如下。

int IComparer<MyWorklistItem>.Compare(MyWorkItem x, MyWorkItem y)
{
int sortValue = 1;
if (this.strSortField.Length == 0)
{
return 0;
}
MyWorkItem item1 = this.blnSortDesc ? y : x;
MyWorkItem item2 = this.blnSortDesc ? x : y;

PropertyInfo property1 = item1.GetType().GetProperty(this.strSortField);
PropertyInfo property2 = item2.GetType().GetProperty(this.strSortField);

string strA = (string)property1.GetValue(item1, null);
string strB = (string)property2.GetValue(item2, null);

if (!string.IsNullOrEmpty(strA) && !string.IsNullOrEmpty(strB))
{
sortValue = strA.CompareTo(strB);
}
return sortValue;
}

当一个值或两个值都为空时,我该如何排序。

注意:我使用的是 VS 2005,所以 LINQ 是不可能的。

请提出建议。

谢谢,斯里拉姆

最佳答案

您可以使用静态 string.Compare 方法而不是实例方法来避免 null 问题,因为您总是比较字符串属性。

http://msdn.microsoft.com/en-us/library/system.string.compare.aspx

关于c# - 当列表具有空值时,List.Sort() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10282636/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com