C# 需要获取筛选器TextValuePair数组
我有两个列表,每个列表包含一些相同的字段数据,我想删除retrun TextValuePair数组中的重复项。但问题是,如果userid不止一个,它会删除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); foreach (var userid in userids) { users= _uow.Users.GetAll().Where(x => x.UserId != userid).ToList() .Select( s => new TextValuePair { Text = s.UserName, Value = s.UserId.ToString() }) .ToArray(); } return users; } public TextValuePair[]FindAllUserByNotThisId(int-id) { TextValuePair[]用户=null; var userids=\u uow.UserInGroups.GetAll().Where(x=>x.GroupId==id.ToList().Select(s=>s.UserId); foreach(userid中的var userid) { users=\u uow.users.GetAll().Where(x=>x.UserId!=UserId).ToList() .选择( s=> 新TextValuePair { Text=s.UserName, Value=s.UserId.ToString() }) .ToArray(); } 返回用户; } 如果userids count为3,则会删除每个重复的id,但最后只删除3个id,其他两个id将显示在用户的最终结果中,如下所示:- 用户标识 userid 1 2 3 用户ID 1. 2. 3. 使用者 用户标识用户名 1A 2 b 3 c 4d 它还返回我的前两个 userid username 1 a 2 b 4 d 用户标识用户名 1A 2 b 4d 但我只想 userid username 4 d 用户标识用户名 4dC# 需要获取筛选器TextValuePair数组,c#,C#,我有两个列表,每个列表包含一些相同的字段数据,我想删除retrun TextValuePair数组中的重复项。但问题是,如果userid不止一个,它会删除foreach中的最后一个,并在users中重新运行其他 这是我的密码 public TextValuePair[] FindAllUserByNotThisId(int id) { TextValuePair[] users=null; var userids = _uow.Us
请帮助..好吧,我认为您的问题是foreach和对
用户
集合的覆盖。试试这个:
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
集合,我们现在知道users
集合在where过滤器之后不会被修改。
使用contains,我们可以在不使用循环的情况下计算整个
usersid
。@mukesh这就是为什么我在答案中使用userid
而不是userid
。您的实现和我的答案之间的独特区别在于,我去掉了foreach,直接在评估中使用用户ID
(您要筛选的用户ID集合)(使用包含
而不是=
操作符)。我理解错了吗?嘿,谢谢,我没有正确地阅读你的答案,而是在sql中使用了我自己的“不在”操作符。我现在正确地看到了你的答案,它与我的答案相似。谢谢我投了赞成票。@mukesh很高兴帮助@mukesh!如果这解决了你的问题,请将其标记为答案,以帮助未来的用户阅读本文。顺便说一下,谢谢你的邀请^^
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;
}