我有一个如下表:
在单个查询中,如何准备如下所示的实体?
public BurndownJiraIssue(
DateTime date,
int toDoCount,
int inProgressCount)
答案 0 :(得分:2)
您可以按日期分组以获得所需的重用
var result = list.GroupBy(x => x.Date).Select(x => new BurndownJiraIssue
{
Date = x.Key,
ToDoCount = x.ToList().Count(c => c.Status == "In Progress"),
InProgressCount = x.ToList().Count(c => c.Status == "Done"),
});
答案 1 :(得分:0)
您可以尝试使用.GroupBy
中的this overload:
class Program
{
static void Main(string[] args)
{
List<StatusDTO> statuses = new List<StatusDTO>
{
new StatusDTO
{
Id = 1,
Date = "8-Apr",
Status = "In Progress"
},
new StatusDTO
{
Id = 2,
Date = "8-Apr",
Status = "In Progress"
},
new StatusDTO
{
Id = 3,
Date = "8-Apr",
Status = "In Progress"
},
new StatusDTO
{
Id = 4,
Date = "8-Apr",
Status = "Done"
},
new StatusDTO
{
Id = 5,
Date = "9-Apr",
Status = "In Progress"
},
new StatusDTO
{
Id = 6,
Date = "9-Apr",
Status = "Done"
},
new StatusDTO
{
Id = 7,
Date = "9-Apr",
Status = "Done"
}
};
List<ResultStatusDTO> results = statuses.GroupBy(x => x.Date, x => x, (a, b) => new ResultStatusDTO
{
Date = a,
DoneCount = b.Count(x => x.Status == "Done"),
InProgressCount = b.Count(x => x.Status == "In Progress")
}).ToList();
}
}
public class ResultStatusDTO
{
public string Date { get; set; }
public int InProgressCount { get; set; }
public int DoneCount { get; set; }
}
public class StatusDTO
{
public int Id { get; set; }
public string Date { get; set; }
public string Status { get; set; }
}