比较两个列表如果匹配找到更新第一个列表属性

时间:2015-07-28 03:40:24

标签: c# linq

我首先有两个列表是

DataTable DtblDiseaseList = this.GetDisease();
List<DiseaseModel> model = DtblDiseaseList.DataTableToList<DiseaseModel>();

第二是

var userDisease = DiseaseManagementBA.getUserDisease(UserID).DataTableToList<DiseaseModel>();

这里我想比较userDisease和模型列表如果匹配,那么我想更新第一个列表的属性,即model。在DiseaseModel类中有属性,即IsChecked。如果找到匹配项,我想将true设置为此属性。

3 个答案:

答案 0 :(得分:0)

第一个“if found found”可以使用Join完成。这将枚举您的每个列表,并返回找到“匹配”条件的模型的结果。我假设“匹配”是匹配ID,因为我不知道实际标准。

var result = (from m in model
              where join d in userDisease on m.ID == d.ID
              select m).ToList();

获得列表后,需要迭代并设置值。我假设你正在使用LinqToSql和InsertOnSubmit以及SubmitChanges方法。

foreach (var r in result)
{
  r.IsChecked = true;
  this.InsertOnSubmit(r);
}     

this.SubmitChanges();

我应该注意这会有效,但第一次连接的结果会被枚举到内存中,数据库不会更新它们。

答案 1 :(得分:0)

你可以这样做:

model.Intersect(userDisease).ToList().ForEach(_ => _.IsChecked = true);

答案 2 :(得分:0)

大家好,我的问题是通过var browser = new IE(true); IEElement myElement = browser.ElementWithTag("div", Find.ById("myDivID")).NativeElement as IEElement; myElement.SetStyleAttributeValue("width", "400px"); myElement.SetStyleAttributeValue("height", "600px"); 查询

解决的
Linq