【发布时间】:2015-03-10 12:00:33
【问题描述】:
我想选择分组的行到一个新的模型列表。这是我的代码:
List<Model_Bulk> q = (from a in db.Advertises
join c in db.Companies on a.AdvertiseCompanyID equals c.CompanyID
where a.AdvertiseActive == true
&& a.AdvertiseExpireDate.HasValue
&& a.AdvertiseExpireDate.Value > DateTime.Now
&& (a.AdvertiseObjectType == 1
|| a.AdvertiseObjectType == 2)
select c)
.GroupBy(a => a.CompanyID).Select(a => new Model_Bulk
{
CompanyEmail = a.CompanyContactInfo.Email,
CompanyID = a.CompanyID,
CompanyName = a.CompanyName,
Mobile = a.CompanyContactInfo.Cell,
UserEmail = a.User1.Email,
categories = a.ComapnyCategories
}).ToList();
分组后,我不能使用 Select 并且自然会出现这个语法错误:
System.Linq.IGrouping' 不包含 'CompanyContactInfo' 的定义,并且没有扩展方法 'CompanyContactInfo' 接受类型的第一个参数 可以找到 System.Linq.IGrouping'(您是否缺少 using 指令或程序集引用?)
如果我尝试使用 SelectMany() 方法。但结果会重复并且 groupby 方法无法正常工作:
List<Model_Bulk> q = (from a in db.Advertises
join c in db.Companies on a.AdvertiseCompanyID equals c.CompanyID
where a.AdvertiseActive == true
&& a.AdvertiseExpireDate.HasValue
&& a.AdvertiseExpireDate.Value > DateTime.Now
&& (a.AdvertiseObjectType == 1
|| a.AdvertiseObjectType == 2)
select c)
.GroupBy(a => a.CompanyID).SelectMany(a => a).Select(a => new Model_Bulk
{
CompanyEmail = a.CompanyContactInfo.Email,
CompanyID = a.CompanyID,
CompanyName = a.CompanyName,
Mobile = a.CompanyContactInfo.Cell,
UserEmail = a.User1.Email,
categories = a.ComapnyCategories
}).ToList();
【问题讨论】:
-
尝试 a.First().CompanyContactInfo.Email ... 为它的一个组...
-
其他属性相同...
-
在解决方案中分组后使用 .Select(a => a.FirstOrDefault()).Select...。感谢您的提示
标签: c# linq entity-framework model group-by