当 List 中存在另一个属性时,如何从属性获取整数列表
本文关键字:从属性 获取 列表 整数 属性 int List 另一个 存在 | 更新日期: 2023-09-27 18:32:00
试图获取List<int>
的返回值,其中一个变量是一个类,具有属性ID
和ParentID
,另一个变量是一个List<int>
,其中包含所有父 ID。 我想从类变量返回所有 ID,这些 ID 在ParentID
存在的变量List<int>
内部匹配。
例如:
_SubCategories = 具有 2 个属性的类:ParentID
和 ID
(均为 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
. 试图让它工作时感觉有点愚蠢......
我想我需要SelectMany
,Where
这里的某个地方...... 非常感谢对此的任何帮助。
听起来相当简单,除非我误解了这个问题
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