[英]Get field value using LINQ query
我需要在此linq查詢中獲取費用的值,並將其傳遞給另一個控制器。
我試過了
var fee = from f in db.Certificates
where f.ID == traveler.CertificateID && f.Fee>0
select f.Fee;
int q = fee.Count();
string famount = fee.ToString();
if (q > 0)
{
TempData["famount"] = famount;
}
但是它傳遞了sql語句。 一些簡單的事情,但我想節省一些時間。
您的費用是可查詢的,您必須使用FirstOrDefault()
獲得價值
var fee = from f in db.Certificates
where f.ID == traveler.CertificateID && f.Fee>0
select f.Fee;
string famount = fee.FirstOrDefault().ToString();
您正在查詢中選擇一個集合。 select f.Fee
將返回IQueryable<T>
/ IEnumerable<T>
。
看來,因為你是基於選擇ID
,你應該得到一個結果返回。 使用SingleOrDefault
像這樣:
var fee = (from f in db.Certificates
where f.ID == traveler.CertificateID && f.Fee>0
select f.Fee).SingleOrDefault();
if (fee != null)
{
TempData["famount"] = fee;
}
您也可以在SingleOrDefault
傳遞條件,例如:
var fee = db.Certificates.SingleOrDefault(f => traveler.CertificateID && f.Fee > 0);
如果找到多個符合條件的項目, SingleOrDefault
將引發異常。 如果是這種情況(並且您沒有選擇唯一ID),請使用FirstOrDefault
為什么要啟動兩個或多個變量?
TempData["famount"] = db.Certificates.Where(f=>f.ID == traveler.CertificateID && f.Fee>0).FirstOrDefault.Count();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.