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が特定の日付と完全に一致する日付。
私を手伝ってくれますか?
ありがとうございました!