【发布时间】:2010-08-15 21:23:41
【问题描述】:
我是 LINQ 的新手,我已经在这方面工作了好几个小时了。我有一个对象列表,其中一个对象属性是所选类别的列表。在对象之外,我还有一个表示类别子集的列表,我想返回包含至少一个类别的所有对象,该类别也在子集中,如下面的伪代码所示(不是我的实际代码)
List<string> subset = cat, dog, mouse
List<myclass> myclasses =
{name:alphie, category:[cat,elephant]},{name:sally, category:[fish]}, {name:bob, category:[dog, mouse]}
在上面的示例中,我需要返回 alphie 和 bob,因为它们都至少有一个类别在我的子集中。
目前唯一的解决方案是获取两者的列表,然后使用昂贵的 foreach 循环进行遍历和比较。我确定 LINQ 必须提供一种更有效的方法来实现这一目标?
更多细节(我觉得我的伪代码不够详细)
public class RadioProgram {
...
private List<string> _category = new List<string>();
public List<string> Category { get { return _category; } set { _category = value; } }
...
}
public class Category {
...
private string _categoryName = "";
private List<Category> _subCategories = new List<Category>();
public string CategoryName { get { return _categoryName; } set { _categoryName = value; } }
public List<Category> SubCategories { get { return _subCategories; } set { _subCategories = value; } }
...
}
我有一个方法,GetCategories(string parentCategory),它将所有子 categoryNames 作为列表返回。每个 radioProgram.Category(是的,名称需要重构为复数)本身就是一个 List,并且可能包含零个、一个或多个 categoryNames。我正在获取我的 radioPrograms 主列表,我想返回一个子集,其中每个子集都包含至少一个与 GetCategories 中的集合匹配的 categoryName。
我试图避免更改应用程序的架构(这是一个潜在的解决方案),因为这意味着对现有功能进行大量重构,我认为这恰好是处理和理解 LINQ 的一个很好的练习。
【问题讨论】:
标签: c# linq-to-objects