【发布时间】:2021-11-28 08:24:22
【问题描述】:
我有两个对象列表,假设第一个称为部门,第二个称为学生。
public class Student {
public int Id {get; set; }
public string Name {get; set; }
public bool IsActive {get; set; }
public int DepId {get;set;}
}
public class Department {
public int DepId {get; set; }
public string DepName {get; set; }
}
备注:用户列表中包含许多对象(超过 150 000 项)。
因此,我使用了Task.Run()
private async Task UpdateMyGrid()
{
departments = ....; // list of departments
students = ..... ; // list of students
await Task.Run(() =>
{
var results = students.Where(x => departments.Any(y => y.DepId== x.DepId));
foreach (var s in students)
{
if (results.ToList().Exists(p => p.DepId== s.DepId))
{
s.IsEnabled = false;
}
}
GridViewStudent.ItemsSource = null;
GridViewStudent.ItemsSource = students;
});
}
我想比较两个用户和部门列表并得到它们之间的结果,然后将属性 IsActive 设置为 false 。
例子:
List students: {1,"John",True,001} , {2,"Mariah",True,003},{3,"Karima",True,002},{4,"Jenny",True,004}
List departments: {001,"Science"} , {002,"Culture"}
预期结果:
Results will be => {1,"John",True,001},{3,"Karima",True,002}
Students will be => {1,"John",False,001} , {2,"Mariah",True,003},
{3,"Karima",False,002},{4,"Jenny",True,004}
我该怎么做才能使上述代码正常工作?
【问题讨论】:
-
但是不使用它我的用户界面被屏蔽了
-
实际问题是什么?你有预期的输入/输出吗?
-
我举个例子。
-
立即查看更新。
-
我不明白逻辑 - 预期和实际之间的逻辑是什么?您是否尝试根据部门是否存在来修改学生活动状态?你想输出结果还是学生?