我是LINQ的新手,我已經在這裏待了好幾個小時了。我有一個對象列表,其中一個對象屬性是所選類別的列表。除了對象之外,我還有一個表示類別子集的List,並且我想返回包含至少一個類別的所有對象,如下面的僞代碼所示(不是我的實際代碼)這裏的SQL「in」子句的等價性是什麼?
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(字符串parentCategory),返回所有的孩子CATEGORYNAMES的名單。每個radioProgram.Category(是的,名稱需要重構爲複數)本身就是一個List,可能包含零個或一個或多個categoryNames。我得到了我的主程序radioPrograms列表,我想返回一個子集,其中包含每個包含至少一個與GetCategories中的集合相匹配的至少一個categoryName。
我試圖避免改變應用程序的體系結構(這是一個潛在的解決方案),因爲它意味着很多重構現有功能,我認爲這恰好是解決和理解LINQ的一個很好的練習。你可以使用
謝謝,我已經遇到類似的解決方案,但我認爲他們沒有工作,我想這是因爲我需要先莫名其妙地加入這兩個名單。我已經擴展了我的原始帖子,提供了更多細節 – tforster 2010-08-15 21:51:51