将List分配给自己与另一个列表连接

时间:2014-02-02 12:28:59

标签: c# concatenation

为什么这样做

this.radGridViewFiles.DataSource = null;
this.radGridViewFiles.DataSource = MyGlobals.ListOfItemsToControl.Concat(MyGlobals.lstNewItems.Where(i => i.sItemRequestStatus == "Add").ToList()); 

但是这给了我下面的错误

MyGlobals.ListOfItemsToControl =  MyGlobals.ListOfItemsToControl.Concat(MyGlobals.lstNewItems.Where(i => i.sItemRequestStatus == "Add").ToList());

“无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'System.Collections.Generic.List'。存在显式转换(您是否错过了转换?)”

1 个答案:

答案 0 :(得分:2)

您不需要将ToListWhere一起使用,因为ConcatIEnumerable<TSource>作为参数(这是Where的返回类型,不需要转换为List<TSource>),而是将其用于语句的结尾,并将返回的结果转换为List<T>

IEnumerable<T>
MyGlobals.ListOfItemsToControl.Concat(MyGlobals.lstNewItems.Where(i => i.sItemRequestStatus == "Add")).ToList();

这是有效的,因为DataSource的类型最有可能object。因此接受IEnumerable<T>List<T> or any other type.

this.radGridViewFiles.DataSource = MyGlobals.ListOfItemsToControl.Concat(MyGlobals.lstNewItems.Where(i => i.sItemRequestStatus == "Add").ToList());