Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找具有Linq和lambda表达式的元素:但不';行不通_C#_Linq_Lambda - Fatal编程技术网

C# 查找具有Linq和lambda表达式的元素:但不';行不通

C# 查找具有Linq和lambda表达式的元素:但不';行不通,c#,linq,lambda,C#,Linq,Lambda,请看以下示例: 第一个解决方案是使用foreach,它工作得很好,也很容易。但我试图使用Linq编写它,但我无法实现这个结果。我做了一些尝试,但没有人成功 我希望只找到一个元素 问题不在运行时:我不太了解Linq sintax,因此我不知道如何获取名为PlacedSelection的元素(foreach结构澄清了我在哪里寻找它)。相反,在我的尝试中,我可以得到PlacedCategory元素。。但我不需要这个 PlacedSelection ActualSelection = null; fo

请看以下示例:

第一个解决方案是使用foreach,它工作得很好,也很容易。但我试图使用Linq编写它,但我无法实现这个结果。我做了一些尝试,但没有人成功

我希望只找到一个元素

问题不在运行时:我不太了解Linq sintax,因此我不知道如何获取名为PlacedSelection的元素(foreach结构澄清了我在哪里寻找它)。相反,在我的尝试中,我可以得到PlacedCategory元素。。但我不需要这个

PlacedSelection ActualSelection = null;

foreach (var placedCategory in Model.Coupon.Categories)
{
    foreach (PlacedSelection placedSelection in placedCategory.Value.Selections)
    {
        var pp = placedSelection.EventId;
        if (pp == Model.EventId)
        {
            ActualSelection = placedSelection;
            break;
        }
    }
}
//IEnumerable<KeyValuePair<string, PlacedCategory>> p = Model.Coupon.Categories(c => c.Value.Selections.Any(s=> s.EventId == Model.EventId));
PlacedSelection-ActualSelection=null;
foreach(模型.息票.类别中的var placedCategory)
{
foreach(PlacedSelection PlacedSelection in placedCategory.Value.Selections)
{
var pp=placedSelection.EventId;
if(pp==Model.EventId)
{
实际选择=地点选择;
打破
}
}
}
//IEnumerable p=Model.优惠券.Categories(c=>c.Value.Selections.Any(s=>s.EventId==Model.EventId));

看起来您需要:

PlacedSelection actualSelection = Model.Coupon.Categories
    .SelectMany(cat => cat.Value.Selections)
    .FirstOrDefault(selection => selection.EventId == Model.EventId);

Any
如果您试图查找类别,但您试图根据其外观查找所选内容,则会使用该选项。

那么发生了什么?你说你没有成功,但你没有说哪里出了问题。老实说,如果你能提供一个简短但完整的程序来演示这个问题,那将非常有帮助。问题是我不太了解Linq sintax,因此我不知道如何获取名为PlacedSelection的元素(foreach结构澄清了我在哪里寻找它),谢谢!你能用Any添加一个例子吗?@Revious:No,因为
Any
不适合这里。它无法实现您的
foreach
循环的功能。如果你提供了一个目标,其中
任何
都是合适的,那将是另一回事——但你应该尝试解决你的问题,而不是尝试使用特定的方法。