2010-07-28 51 views
4

我有两张表格用来填充gridview。这些表具有一个名为RangeActivityID的公共字段。我的问题是数据库很旧,一些较旧的条目不匹配表之间的ID,所以我无法在数据库中添加它们之间的关联。LINQ To SQL可以检测表关联中断的位置吗?

不关心关于旧数据不匹配,所以在我的.dbml文件中,我手动创建一个关联,以便从两个表中选择好的数据。这是LINQ查询我有:

var collective = from p in rangeConnection.RangeActivities 
          orderby p.RangeActivityID 
          select new 
          { 
           TestName = p.TestName, 
           DateTime = p.ActivityDateTime, 
           Notes = p.Notes, 
           //RoundSerialNumber = p.RoundFire.RoundSerialNumber, 
           //RoundType = p.RoundFire.RoundType, 
           //LotStockNumber = p.RoundFire.LotNumber 
          }; 

我可以在我的网格数据源设置为“集体”和一切正常,但如果我去掉三个注释行,查询,因为表有没有按数据不返回任何结果不符合协会标准。有没有办法让LINQ查询忽略不匹配的结果?

在此先感谢!

回答

2

尝试添加where p.RoundFire != null条件。

1

改为建议使用join,并模拟SQL LEFT JOIN

var q = from p in rangeConnection.RangeActivities 
      join r in rangeConnection.RoundFires 
       on p.RangeActivityID equals r.RangeActivityID into sr 
      from x in sr.DefaultIfEmpty() 
      select new 
         { 
          TestName = p.TestName, 
          DateTime = p.ActivityDateTime, 
          Notes = p.Notes, 
          RoundSerialNumber = x.RoundSerialNumber, 
          RoundType = x.RoundType, 
          LotStockNumber = x.LotNumber 
          //consider checking for string.IsNullOrEmpty() 
          //for the RoundFires properties 
         }; 

您的实体的语法可能不准确,但如果能帮助您找到解决方案,请编辑我的答案。