尝试获取List<int>
的返回值,其中一个变量是一个类,属性为ID
和ParentID
,另一个变量为List<int>
,其中包含所有父ID在那里。我想从类变量中返回List<int>
变量中存在ParentID
的所有ID。
例如:
_SubCategories =具有2个属性的类:ParentID
和ID
(两种类型Int32)
_ParentCategoryIDs = List<int>
,其中包含所有父ID的完整列表。
我需要遍历_ParentCategoryIDs
中存在的所有_SubCategories.ParentID
,并从ParentID
获取每个_SubCategories
的所有ID,并将其填入List<int>
。
我正在努力解决这个问题,基本上,我想把它转换为由管道字符分隔的字符串,如下所示:
string.Join("|", _SubCategories.ConvertAll<int>(v => v.ParentID)
.Intersect(_ParentCategoryIDs).Distinct());
因此,需要输出ParentID
位于_ParentCategoryIDs
的_SubCategories中的所有ID。试图让这个工作起来感觉有点愚蠢...
我觉得我需要SelectMany
和Where
在这里......对此有任何帮助都非常感谢。
答案 0 :(得分:3)
听起来相当简单,除非我误解了这个问题
var matched = _SubCategories.Where(sc => _ParentCategoryIDs.Contains(sc.ParentID))
.Select(sc => sc.ID)
.ToList();
然后你可以用管道加入:
var result = String.Join("|",matched);
答案 1 :(得分:0)
我不确定这是不是你的意思(但试试这个): -
List<int> result = categories.Where(x => x.ParenttIds.Contains(x.subCats.ParentID))
.Select(x => x.subCats.ID).ToList();
我使用了以下输入并输入: -
List<Category> categories = new List<Category>
{
new Category { subCats = new _SubCategories { ID =1, ParentID = 4}, ParenttIds = new List<int> { 2,4,7}},
new Category { subCats = new _SubCategories { ID =2, ParentID = 2}, ParenttIds = new List<int> { 4,3,8}},
new Category { subCats = new _SubCategories { ID =3, ParentID = 8}, ParenttIds = new List<int> { 2,8,4}}
};
public class Category
{
public _SubCategories subCats { get; set; }
public List<int> ParenttIds { get; set; }
}
public class _SubCategories
{
public int ID { get; set; }
public int ParentID { get; set; }
}
答案 2 :(得分:0)
使用lambda表达式:
int id = 1; //ID of parent (Category)
List<SubCategory> results = _SubCategories.FindAll(x => x.ParentId == id); //returns all subcat with parent id = 1