Chr*_*ris 7 c# linq linq-to-sql
我正在尝试在我的代码中使用以下LINQ to SQL:
(from s in dc.Accounts
join purchases in dc.Transactions on s.AccID equals purchases.Account into pu
join pop in dc.POPTransactions on new { s.ID, syncNo } equals new {AccId = pop.AccountID, SyncNo = pop.SyncNo } into po
where s.AccID == ID && s.Customer == false
select new AccsandPurchase { acc = s, purchases = pu.ToList(), pop = po.ToList() } ));
Run Code Online (Sandbox Code Playgroud)
错误发生在第二个连接线上(上面整个查询中的第3行) - 我曾经拥有它所以它刚刚加入了s.ID和pop.AccountID并且工作得很完美,但现在我引入了另一个连接标准(syncno) )我收到以下错误:
"join子句中某个表达式的类型不正确.在调用'GroupJoin'时类型推断失败"
有任何想法吗?一些说明:
1:'变量'syncNo'是一个long,就像DB(bigint)中的值一样.db中的值是可以为空的,所以我也尝试过"long?" 作为变量类型
2:AccsandPurchase是我制作的自定义课程,你可能猜到了
谢谢
Mad*_*man 21
尝试指定相同的连接键名称,例如
join pop in dc.POPTransactions on new { Key1 = s.ID, Key2 = syncNo } equals new {Key1 = pop.AccountID, Key2 = pop.SyncNo }
Run Code Online (Sandbox Code Playgroud)
来自MSDN文档:
复合键的类型推断取决于键中属性的名称以及它们出现的顺序.如果源序列中的属性不具有相同的名称,则必须在键中指定新名称.例如,如果Orders表和OrderDetails表各自为其列使用不同的名称,则可以通过在匿名类型中指定相同的名称来创建复合键:
join...on new {Name = o.CustomerName, ID = o.CustID} equals
new {Name = d.CustName, ID = d.CustID }
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/bb907099.aspx
| 归档时间: |
|
| 查看次数: |
6481 次 |
| 最近记录: |