当 List 中存在另一个属性时,如何从属性获取整数列表

本文关键字:从属性 获取 列表 整数 属性 int List 另一个 存在 | 更新日期: 2023-09-27 18:32:00

试图获取List<int>的返回值,其中一个变量是一个类,具有属性IDParentID,另一个变量是一个List<int>,其中包含所有父 ID。 我想从类变量返回所有 ID,这些 ID 在ParentID存在的变量List<int>内部匹配。

例如:

_SubCategories = 具有 2 个属性的类:ParentIDID(均为 Int32 类型)
_ParentCategoryIDs = List<int>,包含所有家长 ID 的完整列表。

我需要遍历所有_ParentCategoryIDs,它们存在于_SubCategories.ParentID中,并从_SubCategories获取每个ParentID的所有ID,并将其填充到List<int>中。

我正在努力解决这个问题,基本上,我想将其转换为由管道字符|分隔的字符串,如下所示:

string.Join("|", _SubCategories.ConvertAll<int>(v => v.ParentID)
                               .Intersect(_ParentCategoryIDs).Distinct());

因此,它需要从ParentID所在的_SubCategories输出所有 ID _ParentCategoryIDs . 试图让它工作时感觉有点愚蠢......

我想我需要SelectManyWhere这里的某个地方...... 非常感谢对此的任何帮助。

当 List<int> 中存在另一个属性时,如何从属性获取整数列表

听起来相当简单,除非我误解了这个问题

var matched = _SubCategories.Where(sc => _ParentCategoryIDs.Contains(sc.ParentID))
                      .Select(sc => sc.ID)
                      .ToList();

然后你可以用管道连接它:

var result = String.Join("|",matched);

我不确定这是否是你的意思(但试试这个):-

 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; }
    }

使用 lambda 表达式:

int id = 1; //ID of parent (Category)
List<SubCategory> results =  _SubCategories.FindAll(x => x.ParentId == id); //returns all subcat with parent id = 1