在项目中,我们添加一个账户,用户名或者登录名等可能要求不能重复,方法如下:
参考项目中的这个写法:
/// <summary> /// 账户不能重复 /// </summary> /// <param name="account">账户值</param> /// <param name="keyValue">主键</param> /// <returns></returns> public bool ExistAccount(string account, string keyValue) { var expression = LinqExtensions.True<UserEntity>(); expression = expression.And(t => t.Account == account); if (!string.IsNullOrEmpty(keyValue)) { expression = expression.And(t => t.UserId != keyValue); } return this.BaseRepository().IQueryable(expression).Count() == 0 ? true : false; }
修改用EF写法:
/// <summary> /// 账户不能重复 /// </summary> /// <param name="account">账户值</param> /// <param name="keyValue">主键</param> /// <returns></returns> public bool ExistAccount(string account, string keyValue = "") { var data=db.Sys_User.Where(t => t.Account == account); if (!string.IsNullOrEmpty(keyValue)) { data = data.Where(t => t.UserId != keyValue); } return data.Count() == 0 ? true : false; }
传递keyValue,用于排除自我,这种情况用在登录用户等会后去修改自己的用户名,在修改过程中,用户突然改变想法还是用老的用户名,这时候如果不排除自我,会显示用户名已经存在,所以加了一个
if (!string.IsNullOrEmpty(keyValue)) { data = data.Where(t => t.UserId != keyValue); }
这个方法!