描述
我的目标是比较
menuList
中的菜单对象的语言。由于 menuList
将语言作为另一个列表提供,这使得它变得更加复杂。因此,我尝试创建一个具有相同值的新类对象,以便我可以使用 menuList.Languages.Contains(languageObject),但是我很快发现这不起作用。我尝试在 for 循环中创建一个 for 循环,但这也不起作用,但从我这边来看可能是失败。
显然我不能写这样的东西:
MenuList.Languages.Name.Equals("English").
因此,我正在寻找一种解决方案,可以检查菜单列表中语言列表的属性名称是否等于我选择的值。
物体
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();
循环
for (int i = 0; i < MenuList.Count; i++)
{
if (MenuList[i].Languages.Contains(LangEng))
{
System.Console.WriteLine("Success");
}
}
也许 linq 的Where 可以解决这个问题?喜欢某事:
foreach(var item in MenuList)
{
var x = item.Languages.Where(obj => obj.Name == <desired language>);
if (x.Count() > 0)
{
//Success code
break;
}
}
我找到了解决办法。如果您只想保留列表中语言列表中包含英语或俄语的元素,则此 LINQ 选项有效。
解决方案
.Where(lang => lang.Languages.Any(any => any.Name.Equals("English") || any.Name.Equals("Russian")))