无法将 System.Collections.Generic.IEnumerable 类型隐式转换为 System.Collections.Generic.List

use*_*ser 2 c# linq

我只需要为每个订单获取一条记录,而且如果有广告,我需要连接到记录。但是当我使用时,Concat我收到了这个错误。

无法将类型隐式转换System.Collections.Generic.IEnumerable<x>System.Collections.Generic.List<x>. 存在显式转换(您是否缺少演员表?)

DateTime now = DateTime.Now;
var pom = (from moduleNews in db.CMS_News_NewsInWebModule
           join module in db.CMS_News_WebModule on moduleNews.moduleKey equals module.moduleKey
           join newsEdnm in db.CMS_News_NewsToEditionNumber on moduleNews.newsGUID equals newsEdnm.newsGUID
           where module.moduleKey == id && newsEdnm.dateToBePublished < now && newsEdnm.CMS_News_Edition_Number.editionID == 2
           //orderby newsEdnm.dateToBePublished descending, moduleNews.order
           select
           new NewsModules
           {
               order = moduleNews.order,
               id = moduleNews.newsInWebModuleId,
               moduleKey = module.moduleKey,
               klientName = module.klientName,
               maxNews = module.maxNews,
               newsGUID = moduleNews.newsGUID,
               title = moduleNews.CMS_News_News.title,
               isAdvertise = moduleNews.isAdvertise,
               advertise = moduleNews.advertise,
               dateToBePublished = newsEdnm.dateToBePublished.Value
           }).OrderBy(x => x.order).ThenByDescending(x => x.dateToBePublished).ToList(); //.GroupBy(x => x.order); 

pom = pom.GroupBy(n => n.order).Select(p => p.FirstOrDefault()).ToList();
Run Code Online (Sandbox Code Playgroud)
var advirtise = (from moduleNews in db.CMS_News_NewsInWebModule
                 join module in db.CMS_News_WebModule on moduleNews.moduleKey equals module.moduleKey

                 where module.moduleKey == id && moduleNews.isAdvertise
                 //orderby newsEdnm.dateToBePublished descending, moduleNews.order
                 select
                 new NewsModules
                 {
                     order = moduleNews.order,
                     id = moduleNews.newsInWebModuleId,
                     moduleKey = module.moduleKey,
                     klientName = module.klientName,
                     maxNews = module.maxNews,
                     newsGUID = moduleNews.newsGUID,
                     title = moduleNews.CMS_News_News.title,
                     isAdvertise = moduleNews.isAdvertise,
                     advertise = moduleNews.advertise,
                     dateToBePublished = null
                 }).OrderBy(x => x.order).ToList();

pom = pom.Concat(advirtise);
Run Code Online (Sandbox Code Playgroud)

ang*_*son 5

这里的问题是:

pom = pom.Concat(advirtise);
 ^    ^-------+------------^
 |            |
 |            +-----> returns IEnumerable<Something> -----+
 |                                                        |
 +----- which you try to store into List<Something> <-----+
Run Code Online (Sandbox Code Playgroud)

您需要创建另一个List<Something>,或将 的类型更改pomIEnumerable<Something>

pom = pom.Concat(advirtise).ToList();
Run Code Online (Sandbox Code Playgroud)

这是一个演示问题的简短程序:

var pom = new[] { "a", "b", "c" }.ToList();
pom = pom.Concat(new[] { "x", "y", "z" }); // CS0266 - cannot implicitly ...
Run Code Online (Sandbox Code Playgroud)

应该这样写:

var pom = new[] { "a", "b", "c" }.ToList();
pom = pom.Concat(new[] { "x", "y", "z" }).ToList();
Run Code Online (Sandbox Code Playgroud)