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 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 与特定日期完全匹配的日期。

请问你能帮帮我吗?

谢谢!

4

1 回答 1

1

您可能需要确保此处两个日期之间的类型:

orderDate != DateTime.MinValue

和这里:

x.orderDate == orderDate

日期格式相同。如果一个值具有不同的格式或增加了额外的精度,那么条件总是会失败。

于 2012-07-08T23:31:43.643 回答