代码之家  ›  专栏  ›  技术社区  ›  Falco Alexander

简单LINQ重构/样式

  •  1
  • Falco Alexander  · 技术社区  · 7 年前

    作为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 回复  |  直到 7 年前
        1
  •  4
  •   Tetyana Korogoda    7 年前

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

    我不认为你会走得更远,也不认为这是值得的——即使你定义了自己的 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);