使用 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
会 return 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();
我需要在此 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
会 return 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();