C# 但是,您可能会受制于另一个程序员类设计,所以这里有一个直接的解决方案
您的整体解决方案需要以下签名、过滤和排序:C# 但是,您可能会受制于另一个程序员类设计,所以这里有一个直接的解决方案,c#,linq,collections,C#,Linq,Collections,您的整体解决方案需要以下签名、过滤和排序: Func<IEnumerable<PersonTimeSheet>, IEnumerable<PersonTimeSheet>> 然后是一种将PersonTimeSheet链接到该顺序的方法: static MonthOrder getLatestMonth(PersonTimeSheet x) { x.Dec != 0 ? return MonthOrder.DEC; x.Nov != 0 ? r
Func<IEnumerable<PersonTimeSheet>, IEnumerable<PersonTimeSheet>>
然后是一种将PersonTimeSheet
链接到该顺序的方法:
static MonthOrder getLatestMonth(PersonTimeSheet x)
{
x.Dec != 0 ? return MonthOrder.DEC;
x.Nov != 0 ? return MonthOrder.NOV;
x.Oct != 0 ? return MonthOrder.OCT;
// Hopefully you get the picture.
}
最后,我需要一个方法,可以从PersonTimeSheet
的集合中找到最新的MonthOrder
。所以我的总体签名应该是:
Func<IEnumerable<PersonTimeSheet>, MonthOrder>
现在,我们将个人时间表
过滤到最近一个月:
IEnumerable<PersonTimeSheet> latestMonthSheets = latestYearSheets.Where((x, i) => getMonth(x) == latestMonth);
现在,我们可以获取最近一个月的小时数并按其排序:
IEnumerable<PersonTimeSheet> finalResult = latestMonthSheets.OrderBy(x => HoursOfMonth(latestMonth, x));
IEnumerable finalResult=latestMonthSheets.OrderBy(x=>HoursOfMonth(latestMonth,x));
这更适合我的练习。但希望它能说明,一个好的核心类设计总是能够战胜围绕问题进行的v.s.编码。稍微改进一下课堂设计,你的答案就会明显减少。我有时会觉得无聊,喜欢处理难度大的课堂设计。不要有错误的印象,其他答案的建议是“正确的”。您应该重新设计
PersonTimeSheet
,以维护月顺序、年顺序等信息。但是,您可能会受制于另一个程序员类设计,因此这里有一个直接的解决方案
您的整体解决方案需要以下签名、过滤和排序:
Func<IEnumerable<PersonTimeSheet>, IEnumerable<PersonTimeSheet>>
然后是一种将PersonTimeSheet
链接到该顺序的方法:
static MonthOrder getLatestMonth(PersonTimeSheet x)
{
x.Dec != 0 ? return MonthOrder.DEC;
x.Nov != 0 ? return MonthOrder.NOV;
x.Oct != 0 ? return MonthOrder.OCT;
// Hopefully you get the picture.
}
最后,我需要一个方法,可以从PersonTimeSheet
的集合中找到最新的MonthOrder
。所以我的总体签名应该是:
Func<IEnumerable<PersonTimeSheet>, MonthOrder>
现在,我们将个人时间表
过滤到最近一个月:
IEnumerable<PersonTimeSheet> latestMonthSheets = latestYearSheets.Where((x, i) => getMonth(x) == latestMonth);
现在,我们可以获取最近一个月的小时数并按其排序:
IEnumerable<PersonTimeSheet> finalResult = latestMonthSheets.OrderBy(x => HoursOfMonth(latestMonth, x));
IEnumerable finalResult=latestMonthSheets.OrderBy(x=>HoursOfMonth(latestMonth,x));
这更适合我的练习。但希望它能说明,一个好的核心类设计总是能够战胜围绕问题进行的v.s.编码。稍微改进一下课堂设计,你的答案就会明显减少。我有时会觉得无聊,喜欢处理难度大的课堂设计。不要有错误的印象,其他答案的建议是“正确的”。您应该重新设计
PersonTimeSheet
,以维护月顺序、年顺序等信息。但是,您可能会受制于另一个程序员类设计,因此这里有一个直接的解决方案
您的整体解决方案需要以下签名、过滤和排序:
Func<IEnumerable<PersonTimeSheet>, IEnumerable<PersonTimeSheet>>
然后是一种将PersonTimeSheet
链接到该顺序的方法:
static MonthOrder getLatestMonth(PersonTimeSheet x)
{
x.Dec != 0 ? return MonthOrder.DEC;
x.Nov != 0 ? return MonthOrder.NOV;
x.Oct != 0 ? return MonthOrder.OCT;
// Hopefully you get the picture.
}
最后,我需要一个方法,可以从PersonTimeSheet
的集合中找到最新的MonthOrder
。所以我的总体签名应该是:
Func<IEnumerable<PersonTimeSheet>, MonthOrder>
现在,我们将个人时间表
过滤到最近一个月:
IEnumerable<PersonTimeSheet> latestMonthSheets = latestYearSheets.Where((x, i) => getMonth(x) == latestMonth);
现在,我们可以获取最近一个月的小时数并按其排序:
IEnumerable<PersonTimeSheet> finalResult = latestMonthSheets.OrderBy(x => HoursOfMonth(latestMonth, x));
IEnumerable finalResult=latestMonthSheets.OrderBy(x=>HoursOfMonth(latestMonth,x));
这更适合我的练习。但希望它能说明,一个好的核心类设计总是能够战胜围绕问题进行的v.s.编码。稍微改进一下课堂设计,你的答案就会明显减少。我有时会觉得无聊,喜欢处理难度大的课堂设计。不要有错误的印象,其他答案的建议是“正确的”。您应该重新设计
PersonTimeSheet
,以维护月顺序、年顺序等信息。但是,您可能会受制于另一个程序员类设计,因此这里有一个直接的解决方案
您的整体解决方案需要以下签名、过滤和排序:
Func<IEnumerable<PersonTimeSheet>, IEnumerable<PersonTimeSheet>>
然后是一种将PersonTimeSheet
链接到该顺序的方法:
static MonthOrder getLatestMonth(PersonTimeSheet x)
{
x.Dec != 0 ? return MonthOrder.DEC;
x.Nov != 0 ? return MonthOrder.NOV;
x.Oct != 0 ? return MonthOrder.OCT;
// Hopefully you get the picture.
}
最后,我需要一个方法,可以从PersonTimeSheet
的集合中找到最新的MonthOrder
。所以我的总体签名应该是:
Func<IEnumerable<PersonTimeSheet>, MonthOrder>
现在,我们将个人时间表
过滤到最近一个月:
IEnumerable<PersonTimeSheet> latestMonthSheets = latestYearSheets.Where((x, i) => getMonth(x) == latestMonth);
现在,我们可以获取最近一个月的小时数并按其排序:
IEnumerable<PersonTimeSheet> finalResult = latestMonthSheets.OrderBy(x => HoursOfMonth(latestMonth, x));
IEnumerable finalResult=latestMonthSheets.OrderBy(x=>HoursOfMonth(latestMonth,x));
这更适合我的练习。但希望它能说明,一个好的核心类设计总是能够战胜围绕问题进行的v.s.编码。稍微改进一下课堂设计,你的答案就会少很多行。你能修改你的课堂吗?使用
字典
或类似工具存储每个月的整数表示值(即使是int[]
也可以,因为一年中的月数不会经常变化:))。然后可以使用现有属性返回适当的值。如果您没有在示例中指定“最近一个月”,则查询会更容易。无论如何,它应该成为一个参数。每个人在五月都有0个小时。@RGraham-注意,有些日历的月数是可变的。这就更迫切地需要一本长达数月的字典了。@ernodeweard。但是如果他用强类型变量表示年份,我们可以放心地假设他不会修改类吗?使用字典
或类似工具存储每个月的整数表示值(即使是int[]
也可以,因为一年中的月数不会经常变化:))。然后可以使用现有属性返回适当的值。如果您没有在示例中指定“最近一个月”,则查询会更容易。无论如何,它应该成为一个参数。每个人在五月都有0小时。@RGraham-注意,有些日历的月数是可变的