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