簡體   English   中英

OrderByDescending 導致我的 datagridview 不填充

[英]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屬性只能設置為實現IListIListSourceIBindingListIBindingListView的類型的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM