简单的LINQ重构/风格

时间:2018-02-24 15:50:20

标签: c# linq coding-style refactoring

由于LINQ Select()想要FUNC<int,T>作为参数,我必须定义一个未使用的变量。 我认为查询语法在这种情况下更清楚。

如何摆脱任何混乱,使阅读变得简单干净?

var rand = new Random();

//Method syntax

IEnumerable<char> c = Enumerable.Range(0, 10)                          
                                .Select( (p) => (char)('A' + rand.Next(0,26)));
//Query syntax
var c = from counter in Enumerable.Range(0,10)
            select (char)('A' + rand.Next(0,26));

1 个答案:

答案 0 :(得分:4)

它看起来很干净,很容易阅读。

我不认为你会得到更多,也不值得 - 即使你定义了自己的Select<T, TR>(this T t, Func<TR> f),你仍然需要打电话它为t.Select(() => ...)(注意空括号)。

您可以将未使用的变量明确标记为_

var c = Enumerable.Range(0, 10).Select(_ => (char)('A' + rand.Next(0, 26)));

或者,您可以使用添加的抽象并隐藏投影,例如,在本地方法中:)

char RandomChar(int _) => (char)('A' + rnd.Next(0, 26));

var c = Enumerable.Range(0, 10).Select(RandomChar);