简单的 LINQ 重构/样式

simple LINQ refactoring / style

由于 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));

它看起来已经很干净并且易于阅读了。

我认为您不会再深入,也不值得——即使您定义了自己的 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);