我有一个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.");
}
答案 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.
}
我还没有对这段代码进行过测试,因为我的问题并没有多大帮助。