.net 在List中比较List中的属性

kwvwclae  于 2023-10-21  发布在  .NET
关注(0)|答案(2)|浏览(135)

说明

我的目标是比较menuList中菜单对象的语言。由于menuList将语言作为另一个列表提供,这使得它有点复杂。所以我尝试用相同的值创建一个新的类对象,这样我就可以使用menuList.Languages.Contains(languageObject),但是我很快发现这不是这样工作的。我试着在for循环中创建一个for循环,这也不起作用,但从我的Angular 来看可能是一个失败。
显然我不能写这样的东西:

MenuList.Languages.Name.Equals("English").

正因为如此,我正在寻找一个解决方案,我可以检查,如果属性名称的menuList内的电子邮件列表等于我选择的值。

对象

private LanguageBox LangEng = new LanguageBox
{
    IsoCode = "eng",
    Name = "English"
};
  • 名单 *
var MenuList = menuDataClient.GetMenuByCity(city)
    .Select(nap => new MenuBox()
    {
        Menu = nap.Menu,
        Languages = nap.Languages
            .Select(lang => new LanguageBox()
            {
                IsoCode = lang.IsoCode,
                Name = lang.Name
            }).ToList()
    })
    .ToList();

The Loop

for (int i = 0; i < MenuList.Count; i++)
{
   if (MenuList[i].Languages.Contains(LangEng))
   {
      System.Console.WriteLine("Success");
   }
}
lf3rwulv

lf3rwulv1#

也许linq的在哪里可以做的把戏?Sth like:

foreach(var item in MenuList)
{
   var x = item.Languages.Where(obj => obj.Name == <desired language>);
   if (x.Count() > 0)  
   {
       //Success code
       break;
   }
}
b09cbbtk

b09cbbtk2#

我找到了解决办法。这个LINQ选项适用于如果你想只保留列表中的元素,这些元素在它们的目录列表中有英语或俄语。

解决方案

.Where(lang => lang.Languages.Any(any => any.Name.Equals("English") || any.Name.Equals("Russian")))

相关问题