如何从这个linq代码中删除foreach ?



我是MVC和linq和viewmodels的新手。我设法得到一个创建和索引视图的工作。"插入"没有"列表"那么难。

我有这样的linq查询:

 public ActionResult Index()
        {
            List<BlendElVM> BEVM = new List<BlendElVM>();
            var list = (from Blend in db.blends
                        join BlendEl in db.blendEl on Blend.ID equals BlendEl.ID
                        select new
                        {
                            Blend.ID, Blend.Title, Blend.TransDt, BlendEl.Comment
                        }).ToList();
             foreach (var item in list)
              {
                  BlendElVM o = new BlendElVM(); // ViewModel
                  o.Comment = item.Comment;
                  o.Title = item.Title;
                  o.TransDt = item.TransDt;
                  o.ID = item.ID;
                  BEVM.Add(o);
              }
            return View(BEVM);           
        }

我不确定的是"foreach"部分。当我在调试中运行时,"列表"显示得很好,但如果我注释掉"foreach",我会得到一个错误-即不期望模型。每个人都做什么?它与数据库有关,但我不明白它在哪里使用"o"和设置列。我以为它会在一个linq查询。是否有可能将两者结合起来并消除"foreach"?

        var BEVM  = (from blend in db.blends
                    join BlendEl in db.blendEl on Blend.ID equals BlendEl.ID
                    select new BlendELVM
                    {
                        ID = blend.ID, 
                        Title = blend.Title, 
                        TransDT = blend.TransDt, 
                        comment = blendEl.Comment
                    }).ToList();

我认为需要foreach来读取对象中的每个元素所以在这个例子中,你有:

BlendElVM o = new BlendElVM();

创建一个名为" o "的对象类型为BlendELVM该对象包含之前声明的所有属性ID, Title, TransDT等

当你放:

foreach (var item in list)
          {
              BlendElVM o = new BlendElVM(); // ViewModel
              o.Comment = item.Comment;
              o.Title = item.Title;
              o.TransDt = item.TransDt;
              o.ID = item.ID;
              BEVM.Add(o);
          }

你给列表中正在读取的项目的新对象赋值最后将其添加到bvm列表并回答是否可以将它们组合起来我会说不因为一开始你声明了查询然后你读取列表中的项目并将它们赋值到BEVM列表

相关内容

  • 没有找到相关文章

最新更新