【问题标题】:Iterate through collections and .Add遍历集合和 .Add
【发布时间】:2015-04-04 19:30:51
【问题描述】:

我正在尝试将foreach 循环数据集合存储在循环之外以供以后使用。

考虑以下foreach 循环。

IList<DetailViewModel> storeAllLoopItems = new List<DetailViewModel>();

foreach (var item in _listOfItems)
{
   var items =
   (from a in context.Employee
       join b in context.Orders on a.Id equals b.Id
       join d in context.Notes on a.Id equals d.Id                            
       where a.Id == item.id
       select new DetailViewModel
       {
         Name = b.LegalName,
         Abbrev = c.Abbrev,
         TaxAmount = a.Amount,
       }).ToList();

      storeAllLoopItems.Add(items); //<<<ERROR
}

错误:

最好的重载方法匹配 'System.Collections.Generic.List.Add(DetailViewModel)' 有一些无效的参数

无法从“System.Collections.Generic.List”转换 到'DetailViewModel'

【问题讨论】:

    标签: c# linq linq-to-sql collections


    【解决方案1】:

    Add 方法用于添加单个值。您需要手动将项目添加到列表中,因为IList 接口没有AddRange 方法。或者将定义更改为具有AddRange 方法的List&lt;DetailValueModel&gt;

    另外,.ToList() 不是必需的,会浪费内存。

    【讨论】:

    • @GrantWinney,我假设最终声明是 storeAllLoopItems.AddRange(items);
    • ToList() 是必需的 我正在使用 EF,仅供参考
    猜你喜欢
    • 2014-04-11
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2011-01-30
    • 2016-01-07
    相关资源
    最近更新 更多