OrderByDescending 导致我的 datagridview 不填充
OrderByDescending is causing my datagridview to not populate
我想根据列 HitCount 对我的列表进行排序。当我将 OrderByDescending
附加到源的末尾时,不再填充 DataGridView。我可以把它取下来,而且效果很好。
var source = CapturedLogs.CapturedIpAddresses.OrderByDescending(x => x.HitCount);
dataGridView1.DataSource = source;
public static List<CapturedLog> CapturedIpAddresses{set;get;}
internal class CapturedLog
{
public string IpAddress { set; get; }
public int HitCount { set; get; }
public bool IsRecordedInFirewall { set; get; }
public bool IsWhiteListed { set; get; }
}
当我添加 .OrderByDescending(x => x.HitCount);
时,DataGridView 没有填充。
我做错了什么?
根据 the documentation,DataSource
属性 只能设置为实现 IList
、IListSource
、IBindingList
, 或 IBindingListView
.
当您简单地追加 .OrderByDescending()
而没有实际实现结果时,它 returns 一个 OrderedEnumerable
类型的对象,它 不是 实现上述任何接口。
您需要将 source
的类型更改为实现支持接口的类型。例如:
// List<CapturedLog>
var source = CapturedLogs.CapturedIpAddresses
.OrderByDescending(x => x.HitCount)
.ToList();
// CapturedLog[]
var source2 = CapturedLogs.CapturedIpAddresses
.OrderByDescending(x => x.HitCount)
.ToArray();
// BindingSource
var ordered = CapturedLogs.CapturedIpAddresses.OrderByDescending(x => x.HitCount);
var source3 = new BindingSource(ordered, null);
我想根据列 HitCount 对我的列表进行排序。当我将 OrderByDescending
附加到源的末尾时,不再填充 DataGridView。我可以把它取下来,而且效果很好。
var source = CapturedLogs.CapturedIpAddresses.OrderByDescending(x => x.HitCount);
dataGridView1.DataSource = source;
public static List<CapturedLog> CapturedIpAddresses{set;get;}
internal class CapturedLog
{
public string IpAddress { set; get; }
public int HitCount { set; get; }
public bool IsRecordedInFirewall { set; get; }
public bool IsWhiteListed { set; get; }
}
当我添加 .OrderByDescending(x => x.HitCount);
时,DataGridView 没有填充。
我做错了什么?
根据 the documentation,DataSource
属性 只能设置为实现 IList
、IListSource
、IBindingList
, 或 IBindingListView
.
当您简单地追加 .OrderByDescending()
而没有实际实现结果时,它 returns 一个 OrderedEnumerable
类型的对象,它 不是 实现上述任何接口。
您需要将 source
的类型更改为实现支持接口的类型。例如:
// List<CapturedLog>
var source = CapturedLogs.CapturedIpAddresses
.OrderByDescending(x => x.HitCount)
.ToList();
// CapturedLog[]
var source2 = CapturedLogs.CapturedIpAddresses
.OrderByDescending(x => x.HitCount)
.ToArray();
// BindingSource
var ordered = CapturedLogs.CapturedIpAddresses.OrderByDescending(x => x.HitCount);
var source3 = new BindingSource(ordered, null);