-3
我編寫了一個代碼,並使用LINQ來獲得顯示偶數和奇數和的樂趣。我的代碼運行良好,但我覺得我可以做得比這更好LINQ中的C#新表達式
點擊here圖像。
static void Main(string[] args)
{
Func<int, int, IEnumerable<int>> NumberRange =
(startPoint, endPoint) =>
Enumerable
.Range(Math.Min(startPoint, endPoint), Math.Abs(startPoint - endPoint) + 1);
Func<double, double, bool> IsDivisible =
(value, divisor) =>
(value % divisor)
.Equals(0);
Action<IEnumerable<object>> DisplayItems =
(data) =>
{
Console
.WriteLine(String.Join(Environment.NewLine, data.Select(n => n)));
};
Func<bool, string> GetState =
(key) =>
key.Equals(true) ? "even" : "odd";
var query =
NumberRange(1, 20)
.GroupBy(item => IsDivisible(item, 2))
.Select(group => new
{
Type = GetState(group.Key),
Sum = group.Sum()
})
.Select(group => new
{
Output = string.Format("Sum of {0} numbers is {1}", group.Type, group.Sum)
}
.Output
);
DisplayItems(query);
Console
.Read();
}
對新表達式有任何優化嗎?謝謝。
我想簡單的循環(或簡單的效用函數)會比這更readible。這讓我摔倒了*「看,我可以寫linq」* – Eser
int odds = 0; int evens = 0; foreach(Enumerable.Range(1,20)中的var val)if(val%2 == 0)evens + = val;否則賠率+ = val;同Eser一樣,Linq在性能方面可能會很危險,明智地使用它。 – Gusman
而不是做這些funcs,把所有這些東西放入適當的擴展方法或東西。 –