如何使用lambda表达式从两个集合中返回一个字段

时间:2012-02-27 15:58:13

标签: c# linq lambda

在c#项目中,我有两个集合,我试图使用lambda查询它们以返回值

伪代码

  

Collection1

     

alertID
  SavedItemID
  SavedName

     

Collection2

     

SavedItemID
  alertID
  警告类型
      dateCreated会

var name = Collection2.where(c => c.savedItemID == Collection1.SavedItemID) return SavedName Property value from collection 1.

基本上在初始查询中我正在进行集合2我想从collection2导航到集合1以返回Saved Name字段。我从未试图通过树向上导航来检索另一个对象。任何人都可以提供一些关于如何构建这个表达式的建议吗?

谢谢

1 个答案:

答案 0 :(得分:4)

您需要使用Join,然后使用project和您关注的字段组成的anonymous type

var result = from c2 in Collection2
    join c1 in Collection1 on c2.SavedItemID equals c1.SavedItemID
    select new { c2.SavedItemID, c1.SavedName };

这相当于

var result = Collection2.Join(
    Collection1, 
    c2 => c2.SavedItemId, 
    c1 => c1.SavedItemId, 
        (c2, c1) => new { c2.SavedItemID, c1.SavedName });