程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Linq查詢條件裡有可空字段比較時報錯variable <>h__TransparentIdentifier2 of type referenced from scope , but it is not defined,linqtosql

Linq查詢條件裡有可空字段比較時報錯variable <>h__TransparentIdentifier2 of type referenced from scope , but it is not defined,linqtosql

編輯:C#入門知識

Linq查詢條件裡有可空字段比較時報錯variable '<>h__TransparentIdentifier2' of type referenced from scope '', but it is not defined,linqtosql


當我運行下面的linq查詢時報了這個錯,
 
  1: var result = (from so in svcContext.new_sales_orderSet
  2: join soitem in svcContext.new_sales_order_itemSet on so.Id equals soitem.new_sales_orderid.Id
  3: join fpitem in svcContext.new_fp_itemSet on soitem.new_modelid.Id equals fpitem.new_modelid.Id
  4: join fp in svcContext.new_floor_priceSet on fpitem.new_fp.Id equals fp.Id
  5: where so.Id == currentEntity.Id
  6: && soitem.new_invoice_price > fpitem.new_floor_price
  7: select (soitem.new_invoice_price - fpitem.new_floor_price) * soitem.new_qty
  8: ).ToList();
 
找了半天原因,才發現是這裡的原因:
&& soitem.new_invoice_price > fpitem.new_floor_price
 
因為這二個字段都是Decimal?,有些值是null,比較起來就報錯了。
 
把這個條件去掉,然後再加上where條件就可以了:
var result = query.Where(q => q != null && q.Value > 0).ToList();

LINQ怎用日期型字段做查詢條件?

建議你先用初始化一個DateTime ,值為DateTime.Now減去30日
然後在Linq中用這倆日期去比較
 

linq多表查詢,並返回所以字段,注意:不要一個一個列出字段,不要select new{a,b}返回結果,解答

這個問題的答案就是你知道的那兩種方法,只有這兩種方法:
要麼用select new {a,b};
要麼用select new {a.字段1,a.字段2,b.字段1,b.字段2}
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved