我需要为每个订单只获得一条记录,但如果有广告,我需要连接到记录。但是当我使用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);
答案 0 :(得分:4)
问题在于:
pom = pom.Concat(advirtise);
^ ^-------+------------^
| |
| +-----> returns IEnumerable<Something> -----+
| |
+----- which you try to store into List<Something> <-----+
您需要创建另一个List<Something>
,或将pom
的类型更改为IEnumerable<Something>
:
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();