2011-10-29 4 views
3

次LINQに参加:LINQ:エラーから複数を使用して

var result = from u in db.userdetails 
    from b in db.bids 
    join x in db.Others on b.UserId equals x.UserId into others 
    from o in others.DefaultIfEmpty() 
    from p in db.Products 
    where u.UserID.Equals(b.UserId) 
    && p.BidId.Equals(b.BidId) 
    && b.DocId == id 

は私にエラーを与える:

The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'GroupJoin'.

+0

適切な型を作成し、クエリに 'select'節を追加すると、それはうまくコンパイルされます。問題のあるクエリ全体をリストし、使用しているタイプをリストできますか?そして、あなたがそれをしているときに、この問題に関連するビットだけが含まれるようにクエリ(および型)を単純化すれば、それは素晴らしいことでしょう。 – svick

+0

b.UserIdとx.UserIdが同じタイプであることを確認してください。 –

答えて

0

あなたはより良い運(およびより保守コード)を有することができるあなたの参加再編によっておよびどこが句。あなたは、エンティティ間の適切な関連を持っている場合、あなたはすべてを回避することができる場合があり、再び

var result = 
    from u in db.userdetails 
    join b in db.bids on u.UserID equals b.UserId 
     where b.DocID == id 
    join p in db.Products 
     on b.BidID equals p.BidId 
    join x in db.Others on b.UserId equals x.UserId into others 
    from o in others.DefaultIfEmpty() 
    Select ??? 

:LINQを実現する、あなたは常に句からのすべての後にWHERE句を持っている必要はありませんオブジェクトグラフを直接ナビゲートすることで、ジョインして目的の形状に投影することができます。

関連する問題