public void TestUsing_NullKeyComparer_Throws() { Func <int, int> keySelector = i => i; IEqualityComparer <int> keyComparer = null; KeyEqualityComparer <int> .Using(keySelector, keyComparer); }
public void TestAnd_KeyComparerNull_Throws() { Func <int, int> keySelector = i => i; IEqualityComparer <int> keyComparer = null; KeyEqualityComparer <int> .Using(i => i).And(keySelector, keyComparer); }
public void TestAdd_MultipleAnds_FlattensCompoundComparers() { IEqualityComparer <int> comparer = KeyEqualityComparer <int> .Using(i => i).And(i => i).And(i => i); Assert.IsTrue(comparer.Equals(0, 0), "The comparer did see identical values as equal."); Assert.IsFalse(comparer.Equals(0, 1), "The compare saw different values as equal."); }
public void TestUsing_WithKeyComparer_NullKeySelector_Throws() { Func <int, int> keySelector = null; IEqualityComparer <int> keyComparer = EqualityComparer <int> .Default; KeyEqualityComparer <int> .Using(keySelector, keyComparer); }
public void ByTest() { var actual = new KeyEqualityComparer <String, Int32>(x => x.Length, null); var equals = actual.Equals("test", "1234"); equals.Should() .BeTrue(); }
public void ByTest1() { var actual = new KeyEqualityComparer <String, String>(x => x, new StringLengthComparer()); var equals = actual.Equals("test", "1234"); equals.Should() .BeTrue(); }
/// <inheritdoc cref="HashSet{TElement}.HashSet(int, IEqualityComparer{TElement}?)" /> public static HashSet <TElement> Create <TElement, TKey>(int capacity, Func <TElement, TKey> keySelector) { _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector)); var comparer = new KeyEqualityComparer <TElement, TKey>(keySelector); return(new HashSet <TElement>(capacity, comparer)); }
public void Equals_Nulls() { var comparer = KeyEqualityComparer.Create((City city) => city.Name); EqualityAssert.NotEquals(null, athens, comparer); EqualityAssert.Equals(null, null, comparer); EqualityAssert.NotEquals(athens, null, comparer); }
/// <inheritdoc cref="ToHashSet{TElement}(IEnumerable{TElement}, IEqualityComparer{TElement})"/> public static HashSet <TElement> ToHashSet <TElement, TKey>(this IEnumerable <TElement> source, Func <TElement, TKey> keySelector) { _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector)); var comparer = new KeyEqualityComparer <TElement, TKey>(keySelector); return(source.ToHashSet(comparer)); }
/// <inheritdoc cref="HashSet{TElement}.HashSet(IEnumerable{TElement}, IEqualityComparer{TElement}?)" /> public static HashSet <TElement> Create <TElement, TKey>(IEnumerable <TElement> source, Func <TElement, TKey> keySelector) { _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector)); _ = source ?? throw new ArgumentNullException(nameof(source)); var comparer = new KeyEqualityComparer <TElement, TKey>(keySelector); return(new HashSet <TElement>(source, comparer)); }
/// <inheritdoc cref="Enumerable.Distinct{TElement}(IEnumerable{TElement})"/> public static IEnumerable <TElement> Distinct <TElement, TKey>(this IEnumerable <TElement> source, Func <TElement, TKey> keySelector) { _ = source ?? throw new ArgumentNullException(nameof(source)); _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector)); var keyEqualityComparer = new KeyEqualityComparer <TElement, TKey>(keySelector); return(source.Distinct(keyEqualityComparer)); }
/// <inheritdoc cref="Enumerable.Contains{TSource}(IEnumerable{TSource}, TSource, IEqualityComparer{TSource}?)"/> public static bool Contains <TElement, TKey>(this IEnumerable <TElement> source, TElement item, Func <TElement, TKey> keySelector) { _ = source ?? throw new ArgumentNullException(nameof(source)); _ = item ?? throw new ArgumentNullException(nameof(item)); _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector)); var equalityComparer = new KeyEqualityComparer <TElement, TKey>(keySelector); return(source.Contains(item, equalityComparer)); }
public new void GetHashCode() { using (new CultureSwapper(PredefinedCulture.EnglishUnitedStates)) { var comparer = KeyEqualityComparer.Create((City city) => city.Name, StringComparer.CurrentCultureIgnoreCase); var añascoHash = comparer.GetHashCode(añasco); Assert.AreEqual(añascoHash, comparer.GetHashCode(añascoUppercase)); Assert.AreEqual(añascoHash, comparer.GetHashCode(añascoCombining)); } }
public void TestKeyEqualityComparer_CaseInsensitiveSet() { string[] names = { "Bob", "Tom", "Gary", "Joe", "bOB", "bob", "TOM" }; KeyEqualityComparer <string> comparer = KeyEqualityComparer <string> .Using(name => name.ToUpperInvariant()); HashSet <string> nameSet = new HashSet <string>(names, comparer); Assert.AreEqual(4, nameSet.Count, "The set did not see some values as duplicates."); }
/// <summary> /// Determines whether a sequence contains the specified element. /// </summary> public static bool EqualsAny <TElement, TKey>(this TElement element, IEnumerable <TElement> source, Func <TElement, TKey> keySelector) { _ = element ?? throw new ArgumentNullException(nameof(element)); _ = source ?? throw new ArgumentNullException(nameof(source)); _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector)); var equalityComparer = new KeyEqualityComparer <TElement, TKey>(keySelector); return(source.Any(i => equalityComparer.Equals(i, element))); }
/// <inheritdoc cref="Enumerable.Intersect{TSource}(IEnumerable{TSource}, IEnumerable{TSource}, IEqualityComparer{TSource}?)"/> public static IEnumerable <TElement> Intersect <TElement, TKey>(this IEnumerable <TElement> left, IEnumerable <TElement> right, Func <TElement, TKey> keySelector) { _ = left ?? throw new ArgumentNullException(nameof(left)); _ = right ?? throw new ArgumentNullException(nameof(right)); _ = keySelector ?? throw new ArgumentNullException(nameof(keySelector)); var equalityComparer = new KeyEqualityComparer <TElement, TKey>(keySelector); return(left.Intersect(right, equalityComparer)); }
public void TestGetHashCode_Explicit_GetsKeysHashCode() { // ignore time when comparing dates IEqualityComparer comparer = KeyEqualityComparer <DateTime> .Using(d => d.DayOfYear); DateTime dateTime = new DateTime(2011, 1, 11); int actual = comparer.GetHashCode(dateTime); int expected = dateTime.DayOfYear.GetHashCode(); Assert.AreEqual(expected, actual, "The key's hash code was not returned."); }
public void TestEquals_WithKeyComparer_KeysDoNotMatch_ReturnsFalse() { // ignore time when comparing dates IEqualityComparer <DateTime> comparer = KeyEqualityComparer <DateTime> .Using(d => d.ToString(), StringComparer.OrdinalIgnoreCase); DateTime first = new DateTime(2011, 1, 11); DateTime second = new DateTime(2011, 1, 12); bool result = comparer.Equals(first, second); Assert.IsFalse(result); }
public void TestEquals_KeyDoNotMatch_ReturnsFalse() { // ignore time when comparing dates IEqualityComparer <DateTime> comparer = KeyEqualityComparer <DateTime> .Using(d => d.Date); DateTime first = new DateTime(2011, 1, 11, 4, 53, 0); DateTime second = new DateTime(2011, 1, 12, 9, 18, 0); bool result = comparer.Equals(first, second); Assert.IsFalse(result); }
public void TestEquals_Explicit_KeysMatch_ReturnsTrue() { // ignore time when comparing dates IEqualityComparer comparer = KeyEqualityComparer <DateTime> .Using(d => d); DateTime first = new DateTime(2011, 1, 11); DateTime second = new DateTime(2011, 1, 11); bool result = comparer.Equals(first, second); Assert.IsTrue(result); }
public Axis(MolapHashTypes hashingtype, DataSchema <T> schema) { _schema = schema; _rowsAxis = new List <KeyValuePair <T, T>[]>(); _columnsAxis = new List <KeyValuePair <T, T>[]>(); _rowHashes = new List <T>(); _columnHashes = new List <T>(); _hasher = Hasher <T> .Create(hashingtype); _keyComparer = new KeyComparer <T>(); _keyEqualityComparer = new KeyEqualityComparer <T>(); }
public async Task SynchronizeConfigurationAsync(IConfiguration configuration) { using (var session = this.documentStore.LightweightSession()) { this.logger.LogInformation("Synchronizing default clients..."); var clientSecretsComparer = new KeyEqualityComparer <ClientSecret>(secret => secret.Value); var clients = Config.GetDefaultClients().Select(x => x.ToEntity()); foreach (var client in clients) { var exisingClients = await session.Query <Client>().Where(document => document.ClientId == client.ClientId).ToListAsync(); if (exisingClients.Any()) { session.DeleteWhere <Client>(document => document.ClientId == client.ClientId); client.ClientSecrets = exisingClients[0].ClientSecrets.Union(client.ClientSecrets, clientSecretsComparer).ToList(); } session.Store(client); } this.logger.LogInformation("Synchronizing default API resources..."); var apiResourceSecretsComparer = new KeyEqualityComparer <ApiSecret>(secret => secret.Value); var apiResources = Config.GetDefaultApiResources(configuration).Select(x => x.ToEntity()); foreach (var apiResource in apiResources) { var exisingApiResources = await session.Query <ApiResource>().Where(document => document.Name == apiResource.Name).ToListAsync(); if (exisingApiResources.Any()) { session.DeleteWhere <ApiResource>(document => document.Name == apiResource.Name); apiResource.Secrets = exisingApiResources[0].Secrets.Union(apiResource.Secrets, apiResourceSecretsComparer).ToList(); } session.Store(apiResource); } this.logger.LogInformation("Synchronizing default identity resources..."); var identityResources = Config.GetDefaultIdentityResources().Select(x => x.ToEntity()); foreach (var identityResource in identityResources) { var exisingApiResources = await session.Query <IdentityResource>().Where(document => document.Name == identityResource.Name).ToListAsync(); if (exisingApiResources.Any()) { session.DeleteWhere <IdentityResource>(document => document.Name == identityResource.Name); } session.Store(identityResource); } session.SaveChanges(); } }
public void TestKeyEqualityComparer_FindByDayOfWeek() { // find the day with the same day of week as today IEqualityComparer <DateTime> comparer = KeyEqualityComparer <DateTime> .Using(date => date.DayOfWeek); HashSet <DateTime> dates = new HashSet <DateTime>(comparer); DateTime today = new DateTime(2013, 01, 05); Assert.IsTrue(dates.Add(today), "The date should have been added."); DateTime weekFromToday = today.AddDays(7); Assert.IsFalse(dates.Add(weekFromToday), "This day of the week has already been added."); }
public void TestKeyEqualityComparer_MultipleKeys() { IEqualityComparer <Person> comparer = KeyEqualityComparer <Person> .Using(p => p.LastName).And(p => p.FirstName); Person joeSmith = new Person() { FirstName = "Joe", LastName = "Smith", }; Person johnSmith = new Person() { FirstName = "John", LastName = "Smith", }; Assert.IsTrue(comparer.Equals(johnSmith, johnSmith), "The same object did not equal itself."); Assert.IsFalse(comparer.Equals(joeSmith, johnSmith), "The first name was not used in the comparison."); }
public void TestAdd_CaseInsensitiveComparer_IgnoresCase() { IEqualityComparer <Person> comparer = KeyEqualityComparer <Person> .Using(p => p.LastName, StringComparer.InvariantCultureIgnoreCase) .And(p => p.FirstName, StringComparer.InvariantCultureIgnoreCase); Person person1 = new Person() { FirstName = "Bob", LastName = "Hamburger" }; Person person2 = new Person() { FirstName = "bob", LastName = "hamburger" }; Assert.AreEqual(comparer.GetHashCode(person1), comparer.GetHashCode(person2), "The hash codes were not the same."); Assert.IsTrue(comparer.Equals(person1, person2), "The two objects were not considered equal."); }
/// <summary> /// 此方法比先Clear(),后AddRange()的好处是,不会造成View的强制刷新。 /// 视觉效果更加自然。 /// 但由于要update和notify所有的参数,肯定会造成效率底下。不适合大量数据的更新。 /// </summary> /// <param name="newItems"></param> public void ReplaceItems(ICollection <T> newItems) { //更新已有的,或添加新增的 foreach (T item in newItems) { AddOrUpdateItem(item, true); } KeyEqualityComparer <T> comp = new KeyEqualityComparer <T>(); //删除newItems里没有的 foreach (T item in this.ToArray <T>()) { if (!newItems.Contains(item, comp)) { this.Remove(item); } } }
public void Add_CustomComparer() { var uriA = new Uri("http://test.local/abc"); var uriB = new Uri("http://test.local/xyz"); var resourceA = new byte[] { 43, 59 }; var resourceB = new byte[] { 217, 24, 64 }; var uriComparer = KeyEqualityComparer.Create((Uri uri) => uri.Host); var xmlResolver = new XmlPreloadedResolver(null, XmlKnownDtds.None, uriComparer); xmlResolver.Add(uriA, resourceA); xmlResolver.Add(uriB, resourceB, @override: false); VerifyResource(resourceA, xmlResolver, uriA); VerifyResource(resourceA, xmlResolver, uriB); xmlResolver.Add(uriB, resourceB, @override: true); VerifyResource(resourceB, xmlResolver, uriA); VerifyResource(resourceB, xmlResolver, uriB); }
private static ForecastResponse ForecastResponse(ForecastResponse data, OpenWeatherMapResponse response) { if (response.StatusCode >= 200 && response.StatusCode < 300) { data.City = response.OpenWeatherMapForecast.City.Name; data.Country = response.OpenWeatherMapForecast.City.Country; IEqualityComparer <ForecastResponse.Data> comparer = KeyEqualityComparer <ForecastResponse.Data> .Using(date => date.Date); data.Forecasts = response.OpenWeatherMapForecast.Forecasts .GroupBy(g => new ForecastResponse.Data { Temperature = g.Main.Temp, WindSpeed = g.Wind.Speed, Humidity = g.Main.Humidity, Weather = g.Weather[0].Main, WeatherIcon = g.Weather[0].Icon, Date = g.Dt.ToLongDateString() }, comparer) .Select(forecast => new ForecastResponse.Data { Temperature = forecast.Key.Temperature, WindSpeed = forecast.Key.WindSpeed, Humidity = forecast.Key.Humidity, Weather = forecast.Key.Weather, WeatherIcon = forecast.Key.WeatherIcon, Date = forecast.Key.Date } ) .ToArray(); data.StatusCode = response.OpenWeatherMapForecast.Cod; data.StatusMessage = "Success"; return(data); } data.StatusMessage = response.Message; data.StatusCode = response.StatusCode; return(data); }
public void Equals() { using (new CultureSwapper(PredefinedCulture.EnglishUnitedStates)) { var comparer = KeyEqualityComparer.Create((City city) => city.Name); EqualityAssert.Equals(añasco, añasco, comparer); EqualityAssert.NotEquals(añasco, añascoUppercase, comparer); EqualityAssert.NotEquals(añasco, añascoCombining, comparer, "Precomposed character should not equal combining character sequence for default equality comparison (ordinal)."); comparer = KeyEqualityComparer.Create((City city) => city.Name, StringComparer.CurrentCulture); EqualityAssert.Equals(añasco, añasco, comparer); EqualityAssert.NotEquals(añasco, añascoUppercase, comparer); EqualityAssert.Equals(añasco, añascoCombining, comparer, "Precomposed character should equal combining character sequence for culture-sensitive comparison (en-US)."); comparer = KeyEqualityComparer.Create((City city) => city.Name, StringComparer.CurrentCultureIgnoreCase); EqualityAssert.Equals(añasco, añasco, comparer); EqualityAssert.Equals(añasco, añascoUppercase, comparer); EqualityAssert.Equals(añasco, añascoCombining, comparer); } }
/// <summary> /// Lưu thông tin. /// </summary> /// <param name="inputObject">DataModel</param> /// <returns>DataModel</returns> private SaveBatchDataModel SaveInfo(SaveBatchDataModel inputObject) { // Khởi tạo biến cục bộ var saveResult = new SaveBatchDataModel(); var processDao = new MasterPhotosDao(); var localeCom = new LocaleCom(); var listUpdate = DataHelper.CreateList<PhotoObject>(); // Map dữ liệu DataHelper.CopyObject(inputObject, saveResult); // Lấy ngôn ngữ chuẩn var basicLocale = localeCom.GetDefault(DataComLogics.CD_APP_CD_CLN); // Lấy danh sách thông tin locale chuẩn var listBasicLocale = inputObject.ListData.Where(o => o.LocaleCd == basicLocale); // Duyệt danh sách thông tin locale chuẩn foreach (var info in listBasicLocale) { // Thêm vào danh sách cập nhật listUpdate.Add(info); // Lấy danh sách locale var listLocaleDb = processDao.GetListOtherLocale(basicLocale, info.PhotoCd); // Duyệt danh sách locale foreach (var other in listLocaleDb) { // Gán dữ liệu cập nhật other.PhotoCd = info.PhotoCd; other.FileCd = info.FileCd; other.SortKey = info.SortKey; other.DeleteFlag = info.DeleteFlag; // Thêm vào danh sách cập nhật listUpdate.Add(other); } } // Lấy danh sách thông tin locale var listOtherLocale = inputObject.ListData.Where(o => o.LocaleCd != basicLocale); // Khởi tạo comparer var comparer = new KeyEqualityComparer<PhotoObject>((k1, k2) => k1.PhotoCd == k2.PhotoCd && k1.LocaleCd == k2.LocaleCd ); // Duyệt danh sách thông tin locale foreach (var info in listOtherLocale) { if (listUpdate.Contains(info, comparer)) { // Lấy thông tin cập nhật var updateObj = listUpdate.Single(o => o.LocaleCd == info.LocaleCd && o.PhotoCd == info.PhotoCd); var idxObj = listUpdate.IndexOf(updateObj); // Gán dữ liệu cập nhật listUpdate[idxObj].PhotoName = info.PhotoName; listUpdate[idxObj].SearchName = info.SearchName; listUpdate[idxObj].Notes = info.Notes; } else { // Thêm vào danh sách cập nhật listUpdate.Add(info); } } // Xử lý tạo transaction var transaction = processDao.CreateTransaction(); // Duyệt danh sách dữ liệu foreach (var info in listUpdate) { // Xử lý update đối tượng dữ liệu processDao.Update(info, transaction); } // Xử lý lưu các thay đổi từ transaction processDao.CommitTransaction(transaction); // Thêm thông báo thành công saveResult.AddMessage("I_MSG_00004"); // Kết quả trả về return saveResult; }
/// <summary> /// Kiểm tra thông tin. /// </summary> /// <param name="inputObject">DataModel</param> private void Check(SaveDataModel inputObject) { // Khởi tạo biến cục bộ var masterDataCom = new MasterDataCom(); var localeCom = new LocaleCom(); var msgs = DataHelper.CreateList<Message>(); // Lấy ngôn ngữ chuẩn var basicLocale = localeCom.GetDefault(DataComLogics.CD_APP_CD_CLN); // Lấy đối tượng dữ liệu var dataInfo = inputObject.LocaleModel.DataInfo; var listLocale = inputObject.LocaleModel.ListLocale; // Kiểm tra bắt buộc if (DataCheckHelper.IsNull(dataInfo.LocaleCd)) { msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "P_CM_00012")); } if (DataCheckHelper.IsNull(dataInfo.BannerCd)) { msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "ADM_MA_BANNERS_00001")); } //if (DataCheckHelper.IsNull(dataInfo.BannerName)) { // msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "ADM_MA_BANNERS_00002")); //} // Kiểm tra danh sách lỗi if (!DataCheckHelper.IsNull(msgs)) { throw new ExecuteException(msgs); } // Kiểm tra bắt buộc file var storageFileCom = new StorageFileCom(); var listFile = storageFileCom.GetList(dataInfo.LocaleCd, dataInfo.FileCd, false); if (listFile.Count == decimal.Zero) { msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "ADM_MA_BANNERS_00003")); } // Kiểm tra danh sách lỗi if (!DataCheckHelper.IsNull(msgs)) { throw new ExecuteException(msgs); } // Kiểm tra locale hợp lệ if (dataInfo.LocaleCd != basicLocale) { msgs.Add(MessageHelper.GetMessage("E_MSG_00030")); } // Kiểm tra danh sách lỗi if (!DataCheckHelper.IsNull(msgs)) { throw new ExecuteException(msgs); } // Kiểm tra dữ liệu tồn tại var isExist = masterDataCom.IsExistBanner( dataInfo.LocaleCd, dataInfo.BannerCd, true); // Kiểm tra dữ liệu tồn tại trường hợp status là add if (inputObject.IsAdd && (isExist)) { msgs.Add(MessageHelper.GetMessage("E_MSG_00017", "ADM_MA_BANNERS_00005")); } // Kiểm tra dữ liệu tồn tại trường hợp status là edit if (inputObject.IsEdit && (!isExist)) { msgs.Add(MessageHelper.GetMessage("E_MSG_00016", "ADM_MA_BANNERS_00005")); } // Kiểm tra danh sách lỗi if (!DataCheckHelper.IsNull(msgs)) { throw new ExecuteException(msgs); } // Khởi tạo biến dùng trong loop var i = 1; var flagError = false; // Duyệt danh sách ngôn ngữ foreach (var info in listLocale) { // Gán trạng thái lỗi bằng false flagError = false; // Kiểm tra bắt buộc if (DataCheckHelper.IsNull(info.LocaleCd)) { flagError = true; msgs.Add(MessageHelper.GetMessageForList( "P_CM_00020", i, "E_MSG_00001", "P_CM_00012")); } //if (DataCheckHelper.IsNull(info.BannerName)) { // flagError = true; // msgs.Add(MessageHelper.GetMessageForList( // "P_CM_00020", i, "E_MSG_00001", "ADM_MA_BANNERS_00002")); //} // Trường hợp lỗi thì đi đến record tiếp theo if (flagError) { // Tăng giá trị i i++; // Đi đến record tiếp theo continue; } // Kiểm tra giá trị duy nhất var comparer = new KeyEqualityComparer<BannerObject>((k1, k2) => k1.RowNo != k2.RowNo && k1.LocaleCd == k2.LocaleCd ); if (dataInfo.LocaleCd == info.LocaleCd || listLocale.Contains(info, comparer)) { flagError = true; msgs.Add(MessageHelper.GetMessageForList( "P_CM_00020", i, "E_MSG_00017", "P_CM_00012")); } // Trường hợp lỗi thì đi đến record tiếp theo if (flagError) { // Tăng giá trị i i++; // Đi đến record tiếp theo continue; } // Tăng giá trị i i++; } // Kiểm tra danh sách lỗi if (!DataCheckHelper.IsNull(msgs)) { throw new ExecuteException(msgs); } }
/// <summary> /// Lưu thông tin. /// </summary> /// <param name="inputObject">DataModel</param> /// <returns>DataModel</returns> private SaveDataModel SaveInfo(SaveDataModel inputObject) { // Khởi tạo biến cục bộ var saveResult = new SaveDataModel(); var processDao = new MasterBannersDao(); // Map dữ liệu DataHelper.CopyObject(inputObject, saveResult); // Lấy đối tượng dữ liệu var dataInfo = inputObject.LocaleModel.DataInfo; var listLocale = inputObject.LocaleModel.ListLocale; // Lấy danh sách dữ liệu đa ngôn ngữ var listLocaleDb = processDao.GetListLocale(dataInfo.BannerCd); // Khởi tạo comparer var comparer = new KeyEqualityComparer<BannerObject>((k1, k2) => k1.BannerCd == k2.BannerCd && k1.LocaleCd == k2.LocaleCd ); // Xử lý tạo transaction var transaction = processDao.CreateTransaction(); // Lưu đối tượng dữ liệu if (inputObject.IsAdd) { // Xử lý insert đối tượng dữ liệu processDao.Insert(dataInfo, transaction); // Duyệt danh sách locale foreach (var info in listLocale) { // Gán dữ liệu cập nhật info.BannerCd = dataInfo.BannerCd; info.FileCd = dataInfo.FileCd; info.SortKey = dataInfo.SortKey; info.DeleteFlag = dataInfo.DeleteFlag; // Xử lý insert đối tượng dữ liệu processDao.Insert(info, transaction); } } else { // Xử lý update đối tượng dữ liệu processDao.Update(dataInfo, transaction); // Duyệt danh sách locale foreach (var info in listLocale) { // Gán dữ liệu cập nhật info.BannerCd = dataInfo.BannerCd; info.FileCd = dataInfo.FileCd; info.SortKey = dataInfo.SortKey; info.DeleteFlag = dataInfo.DeleteFlag; // Trường hợp không tồn tại dữ liệu if (listLocaleDb.Contains(info, comparer)) { // Xử lý update đối tượng dữ liệu processDao.Update(info, transaction); } else { // Xử lý insert đối tượng dữ liệu processDao.Insert(info, transaction); } } } // Xử lý lưu các thay đổi từ transaction processDao.CommitTransaction(transaction); // Thêm thông báo thành công saveResult.AddMessage("I_MSG_00004"); // Kết quả trả về return saveResult; }
public void GetHashCode(string strTest, int nHashCode) { var keyComparer = new KeyEqualityComparer <string, int>(str => str.Length); Assert.AreEqual(nHashCode, keyComparer.GetHashCode(strTest)); }
/// <summary> /// Kiểm tra thông tin. /// </summary> /// <param name="inputObject">DataModel</param> private void Check(SaveBatchDataModel inputObject) { // Khởi tạo biến cục bộ var masterDataCom = new MasterDataCom(); var msgs = DataHelper.CreateList<Message>(); // Kiểm tra bắt buộc if (DataCheckHelper.IsNull(inputObject.ListData)) { msgs.Add(MessageHelper.GetMessage("E_MSG_00001", "P_CM_00015")); } // Kiểm tra danh sách lỗi if (!DataCheckHelper.IsNull(msgs)) { throw new ExecuteException(msgs); } // Khởi tạo biến dùng trong loop var i = 1; // Duyệt danh sách dữ liệu foreach (var info in inputObject.ListData) { // Khởi tạo biến cục bộ var flagError = false; // Kiểm tra bắt buộc if (DataCheckHelper.IsNull(info.LocaleCd)) { flagError = true; msgs.Add(MessageHelper.GetMessageForList( "P_CM_00015", i, "E_MSG_00001", "P_CM_00012")); } if (DataCheckHelper.IsNull(info.TypeCd)) { flagError = true; msgs.Add(MessageHelper.GetMessageForList( "P_CM_00015", i, "E_MSG_00001", "ADM_MA_ROOMTYPES_00001")); } if (DataCheckHelper.IsNull(info.TypeName)) { flagError = true; msgs.Add(MessageHelper.GetMessageForList( "P_CM_00015", i, "E_MSG_00001", "ADM_MA_ROOMTYPES_00002")); } if (DataCheckHelper.IsNull(info.Slug)) { flagError = true; msgs.Add(MessageHelper.GetMessageForList( "P_CM_00015", i, "E_MSG_00001", "P_CM_00027")); } // Trường hợp lỗi thì đi đến record tiếp theo if (flagError) { // Tăng giá trị i i++; // Đi đến record tiếp theo continue; } // Kiểm tra dữ liệu tồn tại var isExist = masterDataCom.IsExistRoomType( info.LocaleCd, info.TypeCd, true); if (!isExist) { flagError = true; msgs.Add(MessageHelper.GetMessageForList( "P_CM_00015", i, "E_MSG_00016", "ADM_MA_ROOMTYPES_00006")); } // Trường hợp lỗi thì đi đến record tiếp theo if (flagError) { // Tăng giá trị i i++; // Đi đến record tiếp theo continue; } // Kiểm tra giá trị duy nhất var isUnique = masterDataCom.IsUniqueRoomType(info.TypeCd, info.Slug); var comparer = new KeyEqualityComparer<RoomTypeObject>((k1, k2) => k1.TypeCd != k2.TypeCd && k1.Slug == k2.Slug ); if (!isUnique || inputObject.ListData.Contains(info, comparer)) { flagError = true; msgs.Add(MessageHelper.GetMessageForList( "P_CM_00015", i, "E_MSG_00017", "P_CM_00027")); } // Trường hợp lỗi thì đi đến record tiếp theo if (flagError) { // Tăng giá trị i i++; // Đi đến record tiếp theo continue; } // Tăng giá trị i i++; } // Kiểm tra danh sách lỗi if (!DataCheckHelper.IsNull(msgs)) { throw new ExecuteException(msgs); } }