如何将DataSource转换为List ?
我有以下方法在DataGridView上加载产品
private void LoadProducts(List products) { Source.DataSource = products; // Source is BindingSource ProductsDataGrid.DataSource = Source; }
而现在我正试图让我回来保存它们,如下图所示。
private void SaveAll() { Repository repository = Repository.Instance; List products = (List)Source.DataSource; Console.WriteLine("Este es el número {0}", products.Count); repository.SaveAll(products); notificacionLbl.Visible = false; }
但是我在这一行得到了一个InvalidCastException
:
List products = (List)Source.DataSource;
那么如何将DataSource转换为List呢?
你不能直接向List施放;
或者:
List products = (List )Source.DataSource;
要么:
List
那么如何将DataSource转换为List呢?
你有很多选择
var products = (List)Source.DataSource; // products if of type List
要么
List products = ((IEnumerable)Source.DataSource).Cast().ToList();
要么
List products = ((IEnumerable)Source.DataSource).OfType().ToList();
要么
List products = new List(); ((IEnumerable)Source.DataSource).AsEnumerable().ToList().ForEach( x => products.Add( (object)x));
您的列表是List
类型,它与List
。 尝试强制转换为List
解开答案这是我的解决方案:
private void SaveAll() { Repository repository = Repository.Instance; List products = (List )Source.DataSource; IEnumerable objects = products.Cast(); repository.SaveAll(objects.ToList()); notificacionLbl.Visible = false; }
我接受建设性的批评。