【问题标题】:Cannot implicitly convert type System.Collections.Generic.IEnumerable to System.Collections.Generic.List无法将 System.Collections.Generic.IEnumerable 类型隐式转换为 System.Collections.Generic.List
【发布时间】:2016-06-16 10:57:59
【问题描述】:

我只需要为每个订单获取一条记录,但如果有广告,我需要连接到记录。但是当我使用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();
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);

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    这里的问题是这样的:

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

    你需要再创建一个List&lt;Something&gt;,或者将pom的类型改为IEnumerable&lt;Something&gt;

    pom = pom.Concat(advirtise).ToList();
    

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

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

    应该这样写:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-07
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      相关资源
      最近更新 更多