需要获取筛选器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天
请帮忙。。
好吧,我认为您的问题是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
。