使用Linq将类中的数据组合到DataTable中

时间:2014-02-27 14:47:09

标签: c# linq

我有一个类似的课程

class Person(){
  int Id;
  string Name;
  string SomePersonalInfo;
}

和一个数据表,其列为Id,Name和SomePersonalInfo。我还在列表中有一个收集数据的集合。

List<Person> = new Id = 1, Name = "So So"
List<Person> = new Id = 1, SomePersonalInfo= "Something"

我正在尝试使用linq,因此我没有为每个语句添加多个,以便在数据表中添加Name和SomePersonalInfo,或者像继续获取数据流一样采取不必要的步骤。任何建议

1 个答案:

答案 0 :(得分:1)

如果你已经有一个强类型列表,为什么你想要一个松散类型的DataTable?此外,没有DataTable通过LINQ查询创建DataRow没有foreach(Person p in persons) tblPerson.Rows.Add(p.Id, p.Name, p.SomePersonalInfo); 的好方法。

因此我只想使用一个可读且高效的循环:

Enumerable.Join

更新 acc。评论:

  

不,我已经有了数据表我只是想更新   来自集合的数据表

然后你必须首先找到交集,使用var inBoth = from p in persons join row in tblPersons.AsEnumerable() on p.Id equals row.Field<int>("Id") select new { Person = p, Row = row }; foreach(var b in inBoth) { b.Row.SetField("Name", b.Person.Name); b.Row.SetField("SomePersonalInfo", b.Person.SomePersonalInfo); }

{{1}}