簡體   English   中英

使用LINQ查詢獲取字段值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM