gpt4 book ai didi

c# - Linq 未按预期执行

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:05 24 4
gpt4 key购买 nike

我有一个函数可以从数据库中名为 users 的表中获取所有用户,其中 user_id 不包含在表 user_ingroup 中,如下所示:

[Authorize]
public ActionResult DisplayUser(int? page, string groupId, string searchName, string searchPosition, string searchOffice)
{
try
{
if (null == db)
{
db = new vien_kiem_soat_streammingEntities();
}

var UserIds = from p in db.user_ingroup.Where(p => p.group_id == groupId) select p.user_id;
var users = db.users.Where(m => !UserIds.Contains(m.id));

if (!String.IsNullOrEmpty(searchName))
{
ViewData["searchName"] = searchName;
users = users.Where(us => us.full_name.ToLower().Contains(searchName.ToLower()));
}

if (!String.IsNullOrEmpty(searchPosition))
{
users = users.Where(us => us.position.Contains(searchPosition));
ViewData["searchPosition"] = searchPosition;
}

if (!String.IsNullOrEmpty(searchOffice))
{
users = users.Where(us => us.office.Contains(searchOffice));
ViewData["searchOffice"] = searchOffice;
}

ViewData["users"] = users.OrderBy(m => m.full_name).ToPagedList(page ?? 1, 2);

var positions = from p in db.users.Where(p => !UserIds.Contains(p.id)) select p.position;
List<string> pos = positions.Distinct().ToList();

ViewData["positions"] = pos;
ViewData["group"] = groupId;

return View("DisplayUser");
}
catch (Exception ex)
{
return Redirect(Url.Action("Login", "Login", null));
}
}

如果传递给此函数的所有参数都为空,但如果其中一个参数有值,则无论用户是否已在组中,该函数都会返回所有用户,一切正常。

谁能解释一下这是怎么发生的以及如何解决这个问题?

最佳答案

groupIdnull 时,UserIds.Contains(m.id) 将始终评估为 false 并且这就是我们的意图。因此看起来这里的罪魁祸首是 ! 下面一行中的运算符..

var users = db.users.Where(m => !UserIds.Contains(m.id));

关于c# - Linq 未按预期执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com