[英]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.