linq加入问题

时间:2011-03-10 21:47:01

标签: c# linq

假设我们有两个这样的表:

表1

|   date   | data1 |
| 3/2/2011 |  xyz  |
| 3/4/2011 |  abc  |

表2

|  date    |  data2  |  data3  |
| 3/2/2011 |  def    |   ghi   |
| 3/9/2011 |  jkl    |   mno   |

我们如何编写连接以获取

| date | data1 | data2 | data3 |

假设我们将MyModel定义为:

MyModel{
  public DateTime TheDate {get;set;}
  public int Data1 {get;set;}
  public int Data2 {get;set;}
  public int Data3 {get;set;}
}

我知道我们必须使用DefaultIfEmpty,但是当两个表的第2行没有相应的日期行时,我不知道如何合并两者。

感谢任何想法。

1 个答案:

答案 0 :(得分:3)

var results = from t1 in table1
              let t2 = (from t in table2 select t)
              where t1.date == t2.date
              select new MyModel {
                TheDate = t1.date == null ? t2.date : t1.date,
                Data1 = t1.data1,
                Data2 = t2.data2,
                Data3 = t2.data3
              };