【发布时间】:2019-12-02 19:49:39
【问题描述】:
我有一个列表,其中包含另一个列表,并且有一个字符串在两个级别上都匹配,并且仅返回两个列表中的匹配值。
例如: 类别:“A”包含产品“A”、“B”和“AA” 类别:“B”包含产品“BA”、“C”和“D” 类别:“”包含产品“A”、“B”
如果我的输入参数是 A,那么结果应该是: 类别“A”,产品“A”和“AA” 产品“A”的类别“”
如果我的输入是 B,那么结果应该是: 类别“B”,产品为“BA” 产品“B”的类别“”
到目前为止我所做的是:
result = AllCustomListValues.
Where(c => c.CategoryName.ToLower().Contains(searchTextInput.ToLower())
|| c.CategoryName == ""
).ToList();
foreach (var value in result)
{
if (value.CategoryName == "")
{
foreach (var CustomList in value.CustomLists)
{
if (!CustomList.ListName.ToLower().Contains(searchTextInput.ToLower()))
CustomListToRemove.Add(CustomList);
}
foreach (var ListToRemove in CustomListToRemove)
value.CustomLists.Remove(ListToRemove);
}
}
这里,AllCustomListValues 包含整个数据,即包含子列表的列表(包含自定义列表的类别列表)。我在类别级别匹配输入文本字符串,然后获取第一组匹配类别,在第二级我试图获取与输入文本字符串不匹配的自定义列表数据并添加然后从中删除主要类别列表的子列表,即自定义列表,这一切都很好,但似乎非常详尽和严格,我正在寻找一个更简单灵活的选项。
【问题讨论】:
-
到目前为止你有什么尝试?
-
当然。你想要哪个平台? WinForms、WPF、UMP?你有什么代码可以开始吗?
-
我正在使用 .net MVC