我有3个字段:urlName
,displayName
和active
。这是检查编辑记录。我在这里要做的是检查UrlName
在Db中是否唯一,但是同时,如果用户已经保存了Url但更改了DisplayName
和Active
,则记录应该更新。
有人告诉我如何解决。
public bool NothingExceptUrlNameExists(string urlName, string displayName, bool active)
{
return (from p in _db.SubMenus
where p.UrlName == urlName && (p.DisplayName != displayName || p.DisplayName == displayName) && (p.Active != active || p.Active == active)
select p).Any();
}
更新记录像
TryUpdateModel(existingMenu);
_menu.Add();
这就是我想要实现的
我的其他2个值应添加到Query DisplayName和Active中。假设数据库中已经有“Contact” UrlName。我正在从下拉列表加载值,返回UrlName =“About”,DisplayName =“About Us”,Active = true。现在编辑记录。这是要匹配的条件。
1-UrlName =“关于”,DisplayName =“关于测试”,Active = true->应该更新。
2-UrlName =“关于”,DisplayName =“关于我们”,有效=否->应该更新。
3-UrlName =“关于”,DisplayName =“关于测试”,有效=否->应该更新。
重要提示:4-UrlName =“newnotexist”,DisplayName =“关于测试”, Activity =否-> 这应更新UrlName并在更改后休息。
5-UrlName =“Contact”,DisplayName =“About Test”,Active = false-> 这不应更新并生成错误。
我希望你理解我想做什么。
最佳答案
基于更新后的问题,如果我对它的理解正确,我认为此解决方案将为您服务。
var urlNameExists = _sb.Any(x => x.UrlName == urlName && x.Id != currentEditId);
if (urlNameExists)
throw Exception("A record with that UrlName already exists");
TryUpdateModel(existingMenu);
_menu.Add();
关于c# - LINQ查询问题。需要检查是否存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6300972/