LINQ让重复数据

哈维尔考斯

我对LINQ简单示例有疑问。我没有收到预期的结果。这是代码:

        string[] postres = { "pay de manzana", "pastel de chocolate", "manzana caramelizada", "fresas con crema", "pay de manzana y pera" };

        IEnumerable<string> mispays = from p in postres
                                      let manzanitas = (
                                        from p1 in postres
                                        where p1.Contains("manzana")
                                        orderby p1
                                        select p1)
                                      from p2 in manzanitas
                                      where p2.Contains("pay")
                                      select p2;

        foreach (string postre in mispays)
        {
            Console.WriteLine(postre);
        }

我期望这个结果:

苹果派苹果梨派

但是我收到这个:

苹果派梨梨派苹果派梨梨派苹果派梨梨派苹果派梨梨派苹果派梨梨派

因此代码重复了我预期结果的5倍。你能告诉我为什么吗?和¿我如何收到预期的结果?

谢谢你的帮助。

它在那里

这是另一个版本。

string[] postres = { "pay de manzana", "pastel de chocolate", "manzana caramelizada", "fresas con crema", "pay de manzana y pera" };

var keyWords = new string[] {"manzana", "pay"};

var found = postres
    .Where( p => keyWords.All( w => p.Contains(w)))
    .ToList();

foreach (var o in found) Console.WriteLine(o);
pay de manzana
pay de manzana y pera

更新以下评论。

您知道使用“ let”的任何方式吗?

var found =
    from p in postres
    let keyWords = new string[] {"manzana", "pay"}
    let sentence = p.ToLower()
    where keyWords.All( w => sentence.Contains(w.ToLower()))
    select p;
    // ToLower()s are obviously optional, but it gives you an extra let ;)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章