我写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 };