我有以下代码:
public List<myTask> MyTask { get; set; }
public class myTask
{
public List<int> ID { get; set; }
public List<DateTime> Date { get; set; }
public Decimal Total { get; set; }
}
List<myTask> tempTask = new List<myTask>();
MyTask = new List<myTask>();
我想做如下的事情,但有错误信息:
MyTask = tempTask.GroupBy(x => x.Date);
错误1无法隐式转换类型 'System.Collections.Generic.IEnumerable,MvcUI.Models.MyTask&GT;&GT;' 到'System.Collections.Generic.List'。一个明确的 存在转换(你错过了演员吗?)
编辑代码:
我试图添加代码:
var newtempTask = tempTask.GroupBy(x => x.Date, (Date, values) =>
new
{
ID = values.Select(x => x.ID).ToList(),
Date = values.Select(x => x.Date).ToList(), Total=values.Select(x => x.Date).ToList()
}); and then
foreach (var newitem in newtempTask)
{
MyTask.Add(new MyTask
{
ID = newitem.ID,
Date= newitem.Date,Total = newitem.Total
});}
我尝试添加代码,请参阅上面编辑的代码。我有错误消息,错误7无法隐式转换类型'System.Collections.Generic.List&gt;'到'System.Collections.Generic.List'
答案 0 :(得分:1)
如果您GroupBy
,则不再有List<myTask>
类型。
当你按列表分组时(这是打算?),你必须将MyTask的声明更改为:
public IEnumerable<IGrouping<List<DateTime>, myTask>> MyTask { get; set; }
答案 1 :(得分:1)
你没有解释你想要实现的目标...... 我认为以下可能是你要求的: (它按日期选择每个组中的第一个任务)
List<myTask> tempTask = new List<myTask>();
// fill tempTask
List<myTask> Task = (from t in tempTask
group t by t.Date into g
select g.First()).ToList();
或者您是否希望每个日期的新任务都包含该组中所有任务的ID以及总计的总和?
在这种情况下,查询有点复杂:
List<myTask> Task2 = (from t in tempTask
group t by t.Date into g
select
new myTask
{
ID = new List<int>(g.SelectMany(t => t.ID)),
Date = g.Key,
Total = g.Sum(t => t.Total)
}).ToList();