2016-07-29 7 views
0

私はlinqの新しいです 私は2テーブル名tblcartとtblorderdetailを持っています: 私はちょうど私の問題を示してこれらの2つのテーブルのいくつかのフィールドを示しています:特別な条件でlinqの2つのテーブルを結合する

tblCart: ID、 CartID、 バーコード、

とtblOrderDetail: ID、 CartID、 完了するバーコード

彼または彼女は彼の要求別の行がtblOrderDetailに挿入されますを確認した場合、その後、

を誰かが、順序を保存し、彼は彼の要求を確認する前に、1行が一時的にtblCartに入り、 今は表示しないようにしたいですtblOrderDetailedに挿入された行(tblCartにある一時的な行のみを表示)

つまり、cartID = 1のtblCartに行があり、同時にCartID = 1の行がある場合tblOrderDetailでは、その行は必要ありません。

tblOrderDetailに存在しない行だけで、これを実現するフィールドはCartID、 です。私はIscompleted = trueとする必要がありますが、私たちが望まない行それは動作しません。しかし

var cartItems = context.tblCarts 
    .Join(context.tblSiteOrderDetails, 
     w => w.CartID, 
     orderDetail => orderDetail.cartID, 
     (w,orderDetail) => new{w,orderDetail}) 
    .Where(a=>a.orderDetail.cartID !=a.w.CartID) 
    .ToList() 

:、

私はこれをしませんでした。

一例:それはちょうどtblCartの最後の2行を表示する必要があり、これらのデータと

tblCart: 
ID=1 
CartID=1213 
Barcode=4567 

ID=2 
CartID=1214 
Barcode=4567 

ID=3 
CartID=1215 
Barcode=6576 

tblOrderDetail: 
ID=2 
CartID=1213 
Barcode=4567 
IsCompleted=true 

、私は

ID=2 
CartID=1214 
Barcode=4567 

ID=3 
CartID=1215 
Barcode=6576 
+1

各テーブルにいくつかのサンプル行を提供し、それらの行を使用するクエリからのサンプル出力を提供できますか? – pquest

+0

@pquest yup ofcurses – sariiia

+0

カートのモデルを質問に追加してください。具体的には、詳細を参照するためにカートにナビゲーションプロパティがありますか? –

答えて

0

を意味これは、SQLでWHERE NOT EXISTSのためのケースのように聞こえます。あなたは、(私はそれがDetailsと呼ばれるものとします)の詳細を参照するには、カート上のナビゲーションプロパティを持っている場合は

var cartItems = context.tblCarts.Where(crt => !context.tblSiteOrderDetails.Any(od => od.CartID == crt.cartID)); 
+0

実際に探していたものは、魅力のように働いていました – sariiia

0

var results=context.tblCarts.Where(c=>!c.Details.Any(d=>d.IsCompleted)); 
大体これはLINQでこのようなものでなければなりません翻訳

+0

解決策をテストしましたが、私の2番目の解決策でした。そんなに – sariiia

関連する問題