【问题标题】:checking list contains string检查列表包含字符串
【发布时间】:2015-04-24 10:50:38
【问题描述】:

有一个类将用于远程验证功能,但无法使其工作

[HttpPost]
public JsonResult doesUserNameExist(string Forename)
{
    IEnumerable<SelectListItem> user = new List<SelectListItem>();
    using (EIPInternalEntities ctx = new EIPInternalEntities())
    {
        user = new SelectList(ctx.Database
                                 .SqlQuery<string>("EXEC dbo.uspGetLkUpJobTitle")
                                 .ToList());
    }

    var userlist = user.ToList();

    //return Json(user == null);
    return Json(!userlist.Contains(Forename));
}

尝试了不同的方法,但目前 (Forename)) 被标记为错误

"参数 1 不能从 'string' 转换为 'System.Web.Mvc.SelectListItem'

如果我尝试

var userlist = (SelectList)user;

//return Json(user == null);
return Json(!userlist.Contains(Forename));

然后是!userList。被标记为

SelectList 不包含 Contains 的定义

【问题讨论】:

  • 你为什么首先使用SelectList?使用普通的List&lt;T&gt;
  • 您好,谢谢,您能详细说明一下吗?我对 c' 和 mvc 很陌生

标签: c# json linq


【解决方案1】:

试试这个

return Json(!userlist.Any(x => x.Text == Forename));

【讨论】:

  • 非常感谢!确实尝试了 .Any 但无法使其正常工作必须需要 x => x.text 部分。
【解决方案2】:

你可以试试这个:

!userlist.Any(item => item.Text == Forename);

userlistSelectListItem 对象的列表。每个SelectListItem 具有三个属性,NameValueSelected。我想很明显你想寻找Text。如果要查找值,只需使用item.Value重写上面的内容即可

【讨论】:

  • 这里有错别字x.Text == Forename
  • @stefankmitph 非常感谢您发现这一点。
  • "无法将 lambda 表达式转换为类型 "SelectListItem",因为它不是委托类型。下面解决了这个问题,谢谢
  • 欢迎你,但我听不懂。您是否尝试了上述方法,但没有成功。你纠正了什么,它跑了,万一这是错误的?提前谢谢你。
  • 是的,两者都给出了 lambda 转换错误。 stefankmitph 的答案有效,尽管我添加了以防您进一步研究它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-01
  • 2020-02-26
  • 2017-11-20
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多