Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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
Asp.net mvc 在ASP.NET MVC5中避免重复记录_Asp.net Mvc_Entity Framework - Fatal编程技术网

Asp.net mvc 在ASP.NET MVC5中避免重复记录

Asp.net mvc 在ASP.NET MVC5中避免重复记录,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我是ASP.NET新手,所以我的搜索引擎中存在重复记录的问题。当我搜索这些城镇时,有些记录是重复的,有些是双重的 控制器.cs [Authorize(Roles = "Attorney")] public ActionResult CreateNext(int? id) { var currentUser = manager.FindById(User.Identity.GetUserId()); var nfDoc = db.NFDOCUMENTS.Find(id);

我是ASP.NET新手,所以我的搜索引擎中存在重复记录的问题。当我搜索这些城镇时,有些记录是重复的,有些是双重的

控制器.cs

[Authorize(Roles = "Attorney")]
public ActionResult CreateNext(int? id)
{
    var currentUser = manager.FindById(User.Identity.GetUserId());
    var nfDoc = db.NFDOCUMENTS.Find(id);


    if (nfDoc.UserId == currentUser.Id && nfDoc.FacilityId == null)
    {
        var contacts = db.Contacts.Where(x => x.ContactCategory.Name == "Facility");
        List<string> towns = new List<string>();

        foreach (var item in contacts)
        {
            if (!towns.Contains(item.City))
            {
                towns.Add(item.City);  


            }
        }



        ViewData["towns"] = towns;


        var medProviders = db.Contacts.Where(x => x.ContactCategory.Name == "Facility" && x.Firstname != null).ToList();
        ViewData["medProviders"] = medProviders;

        var pat = db.Patients.Where(x => x.Id == nfDoc.PatientId).FirstOrDefault();
        ViewBag.Address = pat.Address1 + ", " + pat.City + ", " + pat.State + ", " + pat.Zip;
        ViewBag.InsuranceId = new SelectList(db.Contacts.Where(s => s.ContactCategory.Name == "Insurance Carrier"), "Id", "Firstname");
        ViewBag.AdjusterId = new SelectList(db.Contacts.Where(s => s.ContactCategory.Name == "Adjuster"), "Id", "Firstname");
        ViewBag.FacilityId = new SelectList(db.Contacts.Where(s => s.ContactCategory.Name == "Facility"), "Id", "Firstname");
        ViewBag.DoctorId = new SelectList(db.Contacts.Where(s => s.ContactCategory.Name == "Doctor"), "Id", "Firstname");

        ViewBag.PatientId = pat.Id;
        ViewBag.PatientName = pat.Firstname + " " + pat.Lastname;

        return View();
    }

    else
    {
        return RedirectToAction("Create");
    }
}
[授权(角色=“律师”)]
公共操作结果CreateNext(int?id)
{
var currentUser=manager.FindById(User.Identity.GetUserId());
var nfDoc=db.NFDOCUMENTS.Find(id);
if(nfDoc.UserId==currentUser.Id&&nfDoc.FacilityId==null)
{
var contacts=db.contacts.Where(x=>x.ContactCategory.Name==“Facility”);
列表城镇=新列表();
foreach(联系人中的var项目)
{
如果(!towns.Contains(item.City))
{
城镇。添加(项目。城市);
}
}
ViewData[“城镇”]=城镇;
var medProviders=db.Contacts.Where(x=>x.ContactCategory.Name==“Facility”&&x.Firstname!=null).ToList();
ViewData[“医疗提供者”]=医疗提供者;
var pat=db.Patients.Where(x=>x.Id==nfDoc.PatientId).FirstOrDefault();
ViewBag.Address=pat.Address1+“,“+pat.City+”,“+pat.State+”,“+pat.Zip;
ViewBag.InsuranceId=新选择列表(db.Contacts.Where(s=>s.ContactCategory.Name==“保险公司”)、“Id”、“Firstname”);
ViewBag.AdjusterId=新的选择列表(db.Contacts.Where(s=>s.ContactCategory.Name==“调节器”),“Id”,“Firstname”);
ViewBag.FacilityId=新建选择列表(db.Contacts.Where(s=>s.ContactCategory.Name==“Facility”)、“Id”、“Firstname”);
ViewBag.DoctorId=新建选择列表(db.Contacts.Where(s=>s.ContactCategory.Name==“医生”)、“Id”、“Firstname”);
ViewBag.PatientId=pat.Id;
ViewBag.PatientName=pat.Firstname+“”+pat.Lastname;
返回视图();
}
其他的
{
返回重定向操作(“创建”);
}
}
查看

所以我希望在搜索引擎过滤过的城镇后,我希望避免重复

  <div class="input-group col-md-12">
   <input id="search" type="text" class="form-control input-lg" placeholder="Search towns" />
   </div>
<ul class="list-group nav nav-pills nav-stacked" style="height: 200px; overflow-x: hidden; overflow-y: auto">
<li><a class="reload-towns"><i class="icon-location4"></i> ALL TOWNS</a></li>
  @foreach (var item in towns)
  {
 <li><a class="town" data-town="@item"><i class="icon-location3"></i> @item</a></li>
}
    </ul>
          </div>
                 </div>
                       </div>

  • 所有城镇
  • @foreach(城镇中的var项目) {
  • @item
  • }

如果您想在c#端解决这个问题,您可以始终使用HashSet(HashSet集合只有在不重复的情况下才向集合添加另一个字符串)

因此,不要使用这个:

List<string> towns = new List<string>();

如果您想在c#端解决这个问题,您可以始终使用HashSet(HashSet集合只有在不重复的情况下才向集合添加另一个字符串)

因此,不要使用这个:

List<string> towns = new List<string>();

ASP.NET是一个web框架。它与数据访问无关。数据访问是实体框架的工作

您没有解释哪个查询返回重复项,但我怀疑每个城市都有多个联系人。此循环:

    foreach (var item in contacts)
    {
        if (!towns.Contains(item.City))
        {
            towns.Add(item.City);  
        }
    }
使用.NET比较规则,这意味着大小写和空格很重要

它可以改写为

var towns=db.Contacts.Where(x => x.ContactCategory.Name == "Facility")
                     .Select(x=>x.City)
                     .Distinct()
                     .ToList();
这将生成一个如下所示的查询:

SELECT DISTINCT City
FROM Contacts inner join ContactCategory on ContactCategory.ID=Contacts.CategoryID
Where ContactCategory.Name='Facility';
这将只显示唯一的城市名称,并在列表中返回结果。字符串的大小写是否重要取决于
City
列的排序规则,但最常见的选项是使用不区分大小写的排序规则


如果
City
列包含脏数据(例如带有前导空格或尾随空格),则此操作仍可能失败

ASP.NET是一个web框架。它与数据访问无关。数据访问是实体框架的工作

您没有解释哪个查询返回重复项,但我怀疑每个城市都有多个联系人。此循环:

    foreach (var item in contacts)
    {
        if (!towns.Contains(item.City))
        {
            towns.Add(item.City);  
        }
    }
使用.NET比较规则,这意味着大小写和空格很重要

它可以改写为

var towns=db.Contacts.Where(x => x.ContactCategory.Name == "Facility")
                     .Select(x=>x.City)
                     .Distinct()
                     .ToList();
这将生成一个如下所示的查询:

SELECT DISTINCT City
FROM Contacts inner join ContactCategory on ContactCategory.ID=Contacts.CategoryID
Where ContactCategory.Name='Facility';
这将只显示唯一的城市名称,并在列表中返回结果。字符串的大小写是否重要取决于
City
列的排序规则,但最常见的选项是使用不区分大小写的排序规则


如果
City
列包含脏数据(例如带有前导空格或尾随空格),则此操作仍可能失败

ASP.NET是一个web框架。它与数据访问无关。您很可能想询问实体框架。你必须发布相关代码并解释错误。你在说什么复制品?哪些问题?表中包含什么,您期望得到什么,您得到了什么?顺便说一句,如果您从联系人表中加载城镇,您将始终至少有两个来自同一城镇的联系人。@PanagiotisKanavos我编辑了我的问题。所以我在寻找城镇,在我过滤城镇之后,我得到了重复的城镇。我想避免这种情况如果要选择不同的项目,请使用
.select()
选择所需内容,并使用
.distinct()
仅选择不同的条目。您也不需要手动填写列表,只需调用
.ToList()
.ToArray()
我重复一遍,ASP.NET MVC与数据访问无关。视图代码没有解释任何内容。不过,加载towns的代码效率很低,而且可能是错误的ASP.NET是一个web框架。它与数据访问无关。您很可能想询问实体框架。你必须发布相关代码并解释错误。你在说什么复制品?哪些问题?表中包含什么,您期望得到什么,您得到了什么?顺便说一句,如果您从联系人表中加载城镇,您将始终至少有两个来自同一城镇的联系人。@PanagiotisKanavos我编辑了我的问题。所以我在寻找城镇,在我过滤城镇之后,我得到了重复的城镇。我想避免这种情况如果要选择不同的项目,请使用
.select()
选择所需内容,并使用
.distinct()
仅选择不同的条目。您也不需要手动填写列表,只需调用
.ToList()
.ToArray()
我会重复,ASP.NE