需要获取筛选器TextValuePair数组

本文关键字:TextValuePair 数组 筛选 获取 | 更新日期: 2023-09-27 18:22:22

我有两个列表,每个列表都包含一些相同的字段数据,我想在重新运行TextValuePair数组时删除重复项。但问题是,如果用户识别了多个,它会删除foreach中的最后一个,并重新运行用户中的另一个。

这是我的代码

public TextValuePair[]FindAllUserByNotThisId(int id){TextValuePair[]users=null;var UserId=_uow.UserInGroups.GetAll()。其中(x=>x.GroupId==id).ToList()。选择(s=>s.UserId);foreach(userid中的var userid){users=_uow.users.GetAll().Where(x=>x.UserId!=UserId).ToList().选择(s=>新建TextValuePair{Text=s.UserName,值=s.UserId.ToString()}).ToArray();}返回用户;}

如果用户id计数为3,那么它会删除每个重复的id,但最后只删除3个id,其他两个id将在用户中显示如下最终结果:-

用户ID

userid1.2.3.

用户

userid用户名1个2 b3 c4天

它还给我前两个也是

userid用户名1个2 b4天

但我只想要

userid用户名4天

请帮忙。。

需要获取筛选器TextValuePair数组

好吧,我认为您的问题是foreach和users集合的覆盖。试试这个:

public TextValuePair[] FindAllUserByNotThisId(int id)
        {
            TextValuePair[] users=null;
            var userids = _uow.UserInGroups.GetAll().Where(x => x.GroupId ==  id).ToList().Select(s=>s.UserId);
               users=  _uow.Users.GetAll().Where(x => !userids.Contains(x.UserId)).ToList()
                       .Select(
                           s =>
                           new TextValuePair
                           {
                               Text = s.UserName,
                               Value = s.UserId.ToString()
                           })
                       .ToArray();
            return users;
        }

如果没有foreach循环和users集合的覆盖,我们现在知道在where过滤器之后不会修改users集合。使用contains,我们可以在不使用循环的情况下评估整个usersid