[英]Cannot implicitly convert type 'string[]' to 'string'
我的索引视图中有以下代码
public ActionResult Index(string searchBy, string search)
{
Session["FullName"] = search;
var dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).ToArray();
Session["PostalAddress"] = dbsenderPostal;
if (searchBy == "XXX")
{
return View(db.TblCUSTOMER_PROFILE.Where(senders =>
senders.GeneratedCode == search || search == null).ToList());
}
else
{
return View(db.TblCUSTOMER_PROFILE.Where(senders =>
senders.CustomerFullName.StartsWith(search) || search ==
null).ToList());
}
}
在我的[HttpPost] MorePost视图中,我正在使用带有值对的Session将数据传递到此“ MorePost”发布控制器。 如果我将.Split()方法添加到“ ViewBag.messages2”,则会发生另一个错误,因为““ System.Array”不包含“ split”的定义”。 这是通过进一步的在线研究来解决这一问题。 请问我对ViewBag的LINQ查询有什么问题吗,这会将数据传递给对象名称“ sentprint”。 我能够从LINQ查询中以“ POBox AX 33 Miami ”检索数据。 我也尝试过使用'TempData'。 像这样的TempData [“ PostalAddress”]。 我确实尝试了其他方法,这些方法会产生其他错误,例如“无法将类型'System.Data.Entity.Infrastructure.DbQuery'隐式转换为'string'”。 抱歉,我是LINQ查询的新手。 提前致谢。
[HttpPost]
public ActionResult MorePost(string Itemn)
{
TblSENDERSINFORMATION sentprint = new TblSENDERSINFORMATION();
ViewBag.messages = Session["FullName"];
sentprint.NameOfSender = ViewBag.messages;
ViewBag.messages2 = Session["PostalAddress"];
sentprint.PostalAddress = ViewBag.messages2; //Error found here
sentprint.Item = Itemn;
}
您的问题在于linq查询本身,让我解释一下原因
在您的查询中,由于这个原因,您将得到一个字符串数组
.ToArray()
即使只是一项,它也是包含一项的字符串数组
var dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).ToArray();
因此,您的解决方案非常简单,只需通过FirstOrDefault()更改ToArray() ,就可以始终只获得一个字符串项(就像top 1一样,但略有不同)
因此您的查询应如下所示
var dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).FirstOrDefault();
现在,您的会话变量将是一个字符串。
在这种情况下,您必须了解更好的linq和泛型。
这个例子说明了为什么不知道自己正在做什么之前不应该使用var的原因。
除非您能够读取代码,否则请使用强类型为软类型。
var dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).ToArray();
字面意思是:
string[] dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).ToArray();
因此:
ViewBag.messages2 = Session["PostalAddress"];
sentprint.PostalAddress = ViewBag.messages2
这没有任何意义,您实际上是在尝试将string []放入字符串中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.