【问题标题】:Convert generic list to BindingList<T>将通用列表转换为 BindingList<T>
【发布时间】:2013-12-05 11:30:08
【问题描述】:

我有与 DataGridView 连接的 BindingList 对象。

BindingList<FilesToProcessDataModels> Listfiles = new BindingList<FilesToProcessDataModels>();
dataGridFiles.DataSource = Listfiles;

我想在 Where 中按给定条件过滤项目列表。如下:

dataGridSheets.DataSource = Listfiles.Where(i => i.Status == FileStatus.NotProcessed).ToList();

上面的代码工作正常,但我想将过滤器结果分配给相同类型的对象 [Listfiles] 而不是 datagrid,

当我这样做时:

Listfiles = Listfiles.Where(i => i.Status == FileStatus.NotProcessed).ToList();

它给出以下错误

[无法将类型 'System.Collections.Generic.List 隐式转换为 绑定列表']

如何将通用列表转换为BindingList&lt;FilesToProcessDataModels&gt;

【问题讨论】:

标签: c# winforms generic-list bindinglist


【解决方案1】:

以下是标准方式 - 谷歌应该很容易显示这个 - 即使在 SO 上:

Convert IList<T> to BindingList<T>

var listFiles= new List<FilesToProcessDataModels>();
var listBindingFiles = new BindingList<FilesToProcessDataModels>(listFiles);

【讨论】:

  • 实际上我使用的是来自 BindingList 的派生类。排序绑定列表:绑定列表。我刚刚从派生类中调用了两个基本构造函数 1.'public SortableBindingList(IList collection) : base(collection){}' 2.'public SortableBindingList() : base(){}'。现在它运行良好。谢谢
【解决方案2】:

像这样:

var yourList = new List<FilesToProcessDataModels>();
var listBinding = new BindingList<FilesToProcessDataModels>(yourList);

【讨论】:

  • @jimtollan 是的,太糟糕了,Zeeshanef 在创建新问题之前没有花 20 秒在谷歌(或 SO)上搜索它。
【解决方案3】:
Listfiles = Listfiles.Where(i => i.Status == FileStatus.NotProcessed).ToList();

我认为您已将 ListFiles 定义为 BindingList 位,现在您正尝试为其分配一个 List。

这就是那个错误的原因

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    相关资源
    最近更新 更多