1
OrdersRepository ordersRepository = new OrdersRepository();

var productInQuery = ordersRepository.ProductIn;
var orderInfoQuery = ordersRepository.OrderInfo;


var result = (from p in productInQuery
              from o in orderInfoQuery
              where p.refNo == o.refNo
              select new {
                 t1 = p.no,
                 t2 = o.no}).ToArray();

私は内部結合のために上記のコードのように書きました。OrderInfoコンテキストの条件ステートメントを追加したいと思います。

...

if(orderDate != DateTime.MinValue){
   orderInfoQuery = orderInfoQuery.Where(x => x.orderDate == orderDate); 
}

// also I tried this too. no is integer in Mysql and I'm sure there is 222 value.
// but still it return always null...
orderInfoQuery = orderInfoQuery.Where(x => x.no == 222);



var result = (from p in productInQuery
                  from o in orderInfoQuery
                  where p.refNo == o.refNo
                  select new {
                     t1 = p.no,
                     t2 = o.no}).ToArray();

条件文を追加しましたが、常にnullを返します。(DB(Mysql)値が存在することを確認します)

そして、それは内部結合ではありませんか?

var result = (from p in productInQuery
              join o in orderInfoQuery on p.refNo equals o.refNo
              select new {
                 t1 = p.no,
                 t2 = o.no}).ToArray();

誰もがこれを知っています、アドバイスしてください〜

ありがとうございました!

[編集]

OMG、申し訳ありませんが、productInとorderInfoが一致することはありません。そのため、常にnullが返されます。

もう一度質問してもいいですか、

var result = (from p in productInQuery
  join o in orderInfoQuery on p.refNo equals o.refNo
  join x in productQuery on p.productNo equals x.no
  join t in productOutQuery on p.no equals t.productInNo into productIn
  from t in productIn.DefaultIfEmpty()
  orderby o.processDate descending
  select new
  {
      qty = p.qty,
      dateIn = o.processDate,
      dateOut = (DateTime?)(from m in orderInfoQuery where m.refNo == t.refNo select m.processDate).FirstOrDefault(),
      etaDate = (DateTime?)(from w in orderInfoQuery where w.refNo == t.refNo select w.eta).FirstOrDefault(),  
  }).ToArray();

これは私のlinqコードであり、今etaDateで検索したいと思います。

どうすればlinqコードを書くことができますか。上記のコードでは、etaDateは単なるサブクエリです。と私は取得したい

etaDateが特定の日付と完全に一致する日付。

私を手伝ってくれますか?

ありがとうございました!

4

1 に答える 1

1

ここで、2つの日付の間のタイプを確認することをお勧めします。

orderDate != DateTime.MinValue

そしてここ:

x.orderDate == orderDate

同じ日付形式です。ある値の形式が異なるか、精度が上がると、条件は常に失敗します。

于 2012-07-08T23:31:43.643 に答える