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