日期:2014-05-20  浏览次数:20861 次

求助:三个表的连接
我写Silverlight程序,用到Linq。

下面是我写的代码,但电脑提示问题,不知道如何解决(各字段都是string),敬请各位高人指点,先谢谢了!
C# code

 var temp = from q1 in dc.MonitorData
            join q2 in dc.EnqInfo on new { q1.EnqId, q1.DtuId } equals new { q2.EnqId, q2.DtuId }
            join q3 in dc.Station on new { q1.StationID, q1.DtuId } equals new { q3.StationID, q3.DTUID }
            select new
            {
                q1.DtuId,
                q2.EnqName,
                q3.Property
             };



好像不能上传截图,第二个join语句,电脑提示错误:join 子句中其中一个表达式的类型不正确。对“Join”的调用中的类型推理失败。

------解决方案--------------------
去 [Station] 表,把 [DTUID] 改成 DtuID,然后重新生成一下代码。这个结果确实让人泄气。

或者这样写也可以:

public class MyDto
{
public string str1 { get; set; }
public string str2 { get; set; }
}

var temp = from q1 in MonitorData
join q2 in EnqInfo on new MyDto { str1 = q1.EnqId, str2 = q1.DtuId } equals new MyDto { str1 = q2.EnqId, str2 = q2.DtuId }
join q3 in Station on new MyDto { str1 = q1.StationID, str2 = q1.DtuId } equals new MyDto { str1 = q3.StationID, str2 = q3.DTUID }
select new { q1.DtuId, q2.EnqName, q3.Property };