Gra*_*Roy 2 c# linq ienumerable
我有一个作为摘要的类,它将作为IEnumerable传递给MVC视图.该课程如下:
public class FixedLineSummary
{
public long? CustomerId { get; set; }
public string CustomerName { get; set; }
public int? NumberOfLines { get; set; }
public string SiteName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
从db返回的结果包含所有单个条目,因此我使用linq来总结这些:
var summary = (from r in result
let k = new {r.CustomerId, CustomerName = r.CompanyName, r.SiteName}
group r by k into t
select new
{
t.Key.CustomerId,
t.Key.CustomerName,
t.Key.SiteName,
Lines = t.Sum(r => r.lines)
});
Run Code Online (Sandbox Code Playgroud)
当我尝试将结果转换为我的对象时,我只是不断收到错误:
Instance argument: cannot convert from 'System.Linq.IQueryable<AnonymousType#1>' to 'System.Collections.Generic.IEnumerable<Domain.Entities.FixedLineSummary>'
Run Code Online (Sandbox Code Playgroud)
有没有办法将linq查询的结果转换为我的类的可枚举?
您应该更改投影以创建您的类,而不是匿名类型:
var summary = from r in result
let k = new {r.CustomerId, CustomerName = r.CompanyName, r.SiteName}
group r by k into t
select new FixedLineSummary
{
CustomerId = t.Key.CustomerId,
CustomerName = t.Key.CustomerName,
SiteName = t.Key.SiteName,
NumberOfLines = t.Sum(r => r.lines)
};
Run Code Online (Sandbox Code Playgroud)
您不能转换匿名类型,FixedLineSummary
因为它们根本不相关(对于编译器).相反,您需要手动创建类的实例:
IEnumerable<FixedLineSummary> summaries = summary
.Select(s => new FixedLineSummary
{
CustomerId = s.CustomerId,
CustomerName = s.CustomerName,
NumberOfLines = s.NumberOfLines,
SiteName = s.SiteName
})
.ToList();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2268 次 |
最近记录: |