[英]How to pass the value of an Linq Query to a normal String without using List?
一個非常簡單的問題,但我找不到答案。
假設我們有這個:
[HttpPost]
public ActionResult Comparison(int id)
{
string makeLst = new List<String>();
var makeQry = from m in db.Car
where m.ID == id
select m.Make;
makeLst = makeQry.AddRange(makeQry);
ViewBag.make = new List<String>(makeLst);
return View();
}
“makeQry”結果視圖只是一個詞(字符串)。 所以我不想為此使用 List,而只使用 String。 使用“.ToString()”將不起作用,因為“makeQry.ToString()”將是查詢本身而不是它的結果。 我檢查了沒有諸如 makeQry.Result 之類的方法來獲取查詢的結果。
謝謝你。
您可以使用First()
或FirstOrDefault()
來獲得單個結果:
ViewBag.make = makeQry.FirstOrDefault();
(不同之處在於,如果集合為空,則First
拋出異常,而FirstOrDefault
在這種情況下僅返回空值。)
詳細信息:如果您確定總是有一個匹配的 ID 值,那么下面應該可以完成這項工作(未測試)
[HttpPost]
public ActionResult Comparison(int id)
{
ViewBag.make = db.Car.FirstOrDefault(x => x.ID == id).Make;
return View();
}
或者如果你更喜歡保持 linq 語法你是如何做的
[HttpPost]
public ActionResult Comparison(int id)
{
ViewBag.make = (from m in db.Car
where m.ID == id
select m.Make).FirstOrDefault();
return View();
}
[HttpPost]
public ActionResult Comparison(int id)
{
var makeQry = from m in db.Car
where m.ID == id
select m.Make;
//As soon as the result is guaranteed to contain only one object
ViewBag.make = makeQry.SingleOrDefault();
return View();
}
它使用Enumerable.SingleOrDefault 方法 (IEnumerable) ,如果沒有元素,則返回輸入序列的單個元素或 null。 如果序列包含多個元素,它將拋出異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.