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 context 添加一些条件语句。
...
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 与特定日期完全匹配的日期。
请问你能帮帮我吗?
谢谢!