小编ani*_*ita的帖子

为什么我使用foreach与LINQ .Where()进行不同的结果过滤?

过滤时我似乎得到了不同的结果.我希望这两段代码得到相同的结果:

Sitecore.Data.Items.Item firstGuess = Sitecore.Context.Database.GetItem(mediaPath);
var matches = new List<Item>();

//Method A
foreach (var child in firstGuess.Parent.Children.InnerChildren)
{
    if (child.DisplayName == firstGuess.DisplayName)
    {
            matches.Add(child);
    }
} 
//Matches.count  = 2

//Method B
var matches2 = firstGuess.Parent.Children.InnerChildren.Where(i => i.DisplayName == firstGuess.DisplayName);
//matches2.any = false
Run Code Online (Sandbox Code Playgroud)

我想找到与我同名的物品firstGuess.

方法A按预期工作,而B似乎给我一个奇怪的结果是!matches2.any()返回false,当我希望true.

.Where和测试.Select

为什么这些看似相同的方法会给我不同的结果

c# linq foreach sitecore

5
推荐指数
1
解决办法
182
查看次数

标签 统计

c# ×1

foreach ×1

linq ×1

sitecore ×1