[英]OrderByDescending is causing my datagridview to not populate
我想根据列 HitCount 对我的列表进行排序。 当我 append 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 不填充。
我究竟做错了什么?
根据文档, DataSource
属性只能设置为实现IList
、 IListSource
、 IBindingList
或IBindingListView
的类型的 object。
当您只是 append .OrderByDescending()
并且实际上没有具体化结果时,它会返回 object 类型的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.