我有以下linq查询,它每天为我提供值,但是我不得不对其进行硬编码,因为我不知道如何将其更改为循环:
var result = from c in groupedJobs
select new
{
Name = c,
Data = new int[] {
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[0]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[1]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[2]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[3]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[4]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[5]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[6]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[7]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[8]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[9]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[10]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[11]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[12]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[13]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[14]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[15]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[16]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[17]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[18]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[19]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[20]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[21]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[22]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[23]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[24]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[25]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[26]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[27]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[28]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[29]),
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[30]),
}
};
我正在尝试执行类似的操作,但是语法错误:
select new ClaimProviderCountAggregate
{
Name = c,
Data = new int[] {
foreach (var item in daysInMonth)
{
groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==item
}
更多信息:
天数是当月天数的数组
var daysInMonth = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
var days = Enumerable.Range(1, daysInMonth).ToArray();
这是我对分组工作的定义
var groupedJobs = new List<ClaimProviderCount>();
public class ClaimProviderCount
{
public DateTime Date { get; set; }
public string ClaimProvider { get; set; }
}
答案 0 :(得分:3)
考虑到您的days
可以枚举,您可以尝试一下:
from c in groupedJobs
select new
{
Name = c,
Data = days.Select(day => groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==day))
.ToArray()
}
答案 1 :(得分:0)
您可以先创建对象:
var a=select new ClaimProviderCountAggregate
{
Name = c,
Data = new int[30]
}
然后用循环填充数组:
for(int i=0;i<31;i++)
{
a.Data[i++]=groupedJobs.Count(d => d.ClaimProvider == c && d.Date.Day==days[i])
}