Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net 4.5 MVC SQL select like_C#_Asp.net_Sql_Asp.net Mvc - Fatal编程技术网

C# asp.net 4.5 MVC SQL select like

C# asp.net 4.5 MVC SQL select like,c#,asp.net,sql,asp.net-mvc,C#,Asp.net,Sql,Asp.net Mvc,所以我有这个代码: public ActionResult SearchIndex(string id) { string searchString = id; var members = from m in db.Members select m; if (!String.IsNullOrEmpty(searchString)) { members

所以我有这个代码:

 public ActionResult SearchIndex(string id)
    {
        string searchString = id;


        var members = from m in db.Members
                      select m;

        if (!String.IsNullOrEmpty(searchString))
        {
            members = members.Where(m => m.town.Equals(searchString));
        }

        return View(members);
    }
这将选择我数据库中的所有城镇名称,并将其显示在下拉菜单中

我如何更改它,使其在显示城镇名称时,仅显示每个城镇名称一次

例如,如果数据库中有3个伦敦人,它将在下拉菜单中显示所有3个伦敦人。我希望它只显示1个伦敦

您要使用


这将
仅选择
城镇值,然后获得
不同的
值,因此伦敦将只出现一次。

我不确定接受的答案是否解决了您最初的问题,即从控制器返回可枚举的
成员
,并在城镇上使用可选过滤器,将名单限制为每个城镇最多一名成员:

var members = db.Members; // Or .AsQueryable();

if (!String.IsNullOrEmpty(searchString))
{
    // Apply the conditional filter, returning Members
    members = members.Where(m => m.town == searchString);
}

// First of each member only (randomly)
return View(members
             .GroupBy(m => m.town)
             .Select(grp => grp.First()));
然而,你真正的要求似乎是

  • 使用过滤后的
    IEnumerable
    作为@Model查看
  • 作为第二个要求,使用不同的城镇填充下拉列表
在这种情况下,您还可以将
IEnumerable
投影到
ViewBag
中,或者更好地创建一个自定义
ViewModel
类,该类包含已筛选的成员列表和下拉列表中的不同城镇

ViewBag.DistinctTowns = db.Members.Select(m => m.town).Distinct();

@user1300788抱歉,这是因为您试图用不同类型的内容覆盖members变量。创建一个名为towns的新变量(无论如何,它更有意义)并进行设置。我仍然会遇到相同的错误:/你能编辑你的答案来显示你是如何做到这一点的吗?我觉得很傻,但我把我的代码中错误的部分贴到了distinct的位置
@foreach(模型中的var项){string mytown=item.town.*在这里输入distinct*@mytown
我如何将distinct放入其中?它类似于
@foreach(模型中的var项.Select(m=>m.town.distinct())…
那么您只需使用item,而不是mytown。我如何才能将orderBy按字母顺序添加到此位
(m=>m.town).Distinct();
?顺便说一句,代码非常有用thanks@user1300788.Distinct().OrderBy(t=>t);(和+1 StuartLC)
ViewBag.DistinctTowns = db.Members.Select(m => m.town).Distinct();