假设我们有两个这样的表:
表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行没有相应的日期行时,我不知道如何合并两者。
感谢任何想法。
答案 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
};