我有2个通用列表,不包含相同类型的所有字段
IList<Category> and List<CategoriesRow>Categories
categoryList = IList<Category>
但两者都有公共字段名称和ID。
我想比较列表类别和categoryList,并从categoryList中找到categoryList [index] .ID在所有ID类别的列表中不存在。对于类别中不存在的所有内容,我将不得不从CatgoryList中删除它们。
我有a previous post in which I was given examples of LINQ,但问题是我必须使用Dynamic,这意味着我将categoryList和Categories作为Dynamic传递。
任何人都可以举例说明如何进行上述操作,因为我不知道该怎么做。
答案 0 :(得分:0)
首先运行CategoryList
的所有列表元素的循环
运行Categories
的所有列表元素的内部循环
比较CategoryList [index] .ID的id和Categories [InnerIndex] .ID
当内循环完成时,检查整个循环中的条件是否为真,如果是,那么ID存在于Categories中,否则不存在。
答案 1 :(得分:0)
for (int i = categoryList.Count-1; i >= 0; i--)
{
int id = categoryList[i].ID;
if (!Categories.Any(r => r.ID == id)) categoryList.RemoveAt(i);
}
答案 2 :(得分:0)
这可能对您有所帮助
for (int i = 0; i < CategoryList.Count; i++) {
if (!CategoryList.Contains(Categories[i]))
Categories.RemoveAt(i);
if (!Categories.Contains(CategoryList[i]))
CategoryList.RemoveAt(i);
}
答案 3 :(得分:0)
public class Category
{
public int Id;
}
public class CategoriesRow
{
public int Id;
}
public List<Category> RemoveNotUsedCategories(List<Category> categoryList, List<CategoriesRow> Categories)
{
List<Category> usedCategories = new List<Category>();
foreach (Category usableCat in categoryList)
{
foreach (CategoriesRow catRow in Categories)
{
if (usableCat.Id == catRow.Id)
{
// Add categories that are used.
usedCategories.Add(usableCat);
// Will break the first loop.
break;
}
}
}
return usedCategories;
}