列表集合addRange多个项目

时间:2019-06-15 11:50:49

标签: c#

现在我正在使用下面的代码在列表中添加新项目。

 mItems.Add(new TableItemsClass() { Description = sqlReader["Name"].ToString(),InventoryTransTempID = Convert.ToInt32(sqlReader["InventoryTransTempID"]) });

如何使用与AddRange相同的方法?

 mItems.AddRange(new TableItemsClass() { Description = sqlReader["Name"].ToString(),InventoryTransTempID = Convert.ToInt32(sqlReader["InventoryTransTempID"]) });

使用上面的代码,我遇到以下错误:

CS1503 Argument 1: cannot convert from 'WiOrderAndroid.TableItemsClass to System.Collections.Generic.IEnumerable<WiOrderAndroid.TableItemsClass>

3 个答案:

答案 0 :(得分:0)

AddRange期望将IEnumerable作为参数,但是您正在传递T。要解决此问题,只需将其传递给列表:

mItems.AddRange(
    new List<TableItemsClass> 
    { 
        new TableItemsClass() 
        { 
          Description = "descr",
          InventoryTransTempID == 1
        },
        new TableItemsClass() 
        { 
           Description = "descr",
           InventoryTransTempID == 2
        } 
    });

答案 1 :(得分:0)

AddRange使用IEnumerable,而不是单个元素。处理此类情况的一种方法是将您的商品包装在数组中:

mItems.AddRange(new TableItemsClass[] {new TableItemsClass() { Description = sqlReader["Name"].ToString(),InventoryTransTempID = Convert.ToInt32(sqlReader["InventoryTransTempID"]) }});

答案 2 :(得分:0)

AddRange用于添加多个Enumerable类型的项。 new TableItemsClass()是一个对象。因此Add将起作用。如果您有List<TableItemsClass>()之类的这些对象的集合,则可以使用AddRange()方法