防止重复项listview表单列表框asp.net mvc3

时间:2014-05-02 09:37:32

标签: c# linq asp.net-mvc-3 listbox

我有一个IEnumerable列表,我希望从列表框中阻止添加重复项(列表中已存在的项)。我发现我必须使用LINQ,但因为我是ASP.NET新手。我不知道如何将我的列表项与列表框项进行比较,同时在我的列表中添加一个新项:

这就是我的列表显示方式::

   public ActionResult Liste()
   {
     try
     {
        List<RubriquepointageVM> lstVM = ServiceApplicatif.GetListe()
                                                          .OrderBy(x => x.Rubrique_PointageId)
                                                          .ToList();

        //  Drop Down List des listRubrique

        IEnumerable<RubriqueVM> listRubrique = RefDataManager.GetRefData<RubriqueVM>() as IEnumerable<RubriqueVM>;
        if (listRubrique.Any())
        {
            ViewBag.idrub = listRubrique.First().RubriqueId;
        }

        ViewData["CodeRubrique"] = new SelectList(listRubrique, "RubriqueId", "CODELIBELLE");

        return View(lstVM);
    }

    catch (Exception ex)
    {
        LoggerRubriquepointage.Error(string.Format("Exception : {0}", ex.Message.ToString()));
        throw new Exception("Erreur lors du chargement.");
    }
}

我想知道的是如何使用LINQ来防止在我的列表框中添加Rubriqueintermediarelist中的现有项目。

我的Save()方法:

public JsonResult Save([DataSourceRequest] DataSourceRequest dsRequest, RubriquepointageVM vm)
    {
        try
        {
            IEnumerable<RubriqueVM> listRubrique = RefDataManager.GetRefData<RubriqueVM>() as IEnumerable<RubriqueVM>;
            ViewData["CodeRubrique"] = new SelectList(RefDataManager.GetRefData<RubriqueVM>(), "RubriqueId", "CODELIBELLE", 976);

            List<RubriquepointageVM> lstRubriqueinter = ServiceApplicatif.GetListe();

            **//Iwant my test to be her before adding an item**

           RubriquepointageVM rub = ServiceApplicatif.Save(vm); 


        DataCache dataCache = new DataCache(CurrentSecurityContext.TenantID);
            dataCache.DropDataCache<RubriquepointageVM>();

            return Json(new[] { lstVMrub }.ToDataSourceResult(dsRequest, ModelState));

        }


        catch (Exception ex)
        {
            LoggerRubriquepointage.Error(string.Format("Exception : {0}", ex.Message.ToString()));
            throw new Exception("Erreur lors de l'enregistrement.");


        }

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说的那样,我无法确切地看到你想要做什么,但从我收集的内容中我会尝试以下内容:

    if(! lstRubriqueinter.Any(x => x.RubriqueId == vm.RubriqueId))
    {
           RubriquepointageVM rub = ServiceApplicatif.Save(vm); 
        // you may need to add this rub to the list at this point. You will  have a better idea.
    }

我还没有对这段代码进行过测试,因为我的问题并没有多大帮助。