KeyValuePair如何判断是否为空

使用Dictionary时难免有时需要通过条件筛选

 

uaDic.Where(p => _ua.Contains(p.Key.ToLower())).FirstOrDefault();

 

在此我需要获取符合条件的一条数据,这条数据可能是空的,但返回的是一个KeyValuePair类型

 

KeyValuePair是一个结构体

 

如何判断是否为空呢

 

if (default(KeyValuePair<string, string>).Equals(dic))

 

KeyValuePair 后面的类型根据自己字典的类型 

 

原文地址    我的博客地址:Wy博客​​​​​​​​​​​​​​

06-14
这段代码可以进行以下优化: 1. 使用 LINQ 来简化代码,例如使用 `Where` 和 `Select` 来筛选和映射集合,使用 `Any` 和 `All` 来判断集合是否为空或满足条件。 2. 将重复的代码抽象成方法或者变量,避免代码重复。 3. 使用 `StringBuilder` 来拼接字符串,避免大量的字符串连接操作。 下面是优化后的代码: ``` public Dictionary<string, List<BasicEntity>> ValidateProcess(string excelFile) { var readExcelResp = excelReader.ReadExcel(excelFile); foreach (var keyValuePair in readExcelResp) { var errors = keyValuePair.Value .Select(ExecuteValidate) .Where(validationResult => validationResult != null && !validationResult.IsValid) .SelectMany(validationResult => validationResult.Errors.Select(error => (validationResult.BasicEntity, error))) .ToList(); errors.ForEach(error => _excelErrorLogService.AddErrorLog(error.BasicEntity.MigrationRowNum.ToString(), error.ErrorMessage, keyValuePair.Key)); keyValuePair.Value.RemoveAll(errors.Select(error => error.BasicEntity).Contains); if (keyValuePair.Value.Any()) { var identityFields = keyValuePair.Value.FirstOrDefault()?.GetIdentity()?.Split(";"); if (identityFields != null) { var sameList = new List<BasicEntity>(); var verifySet = new HashSet<string>(); foreach (var basicEntity in keyValuePair.Value) { var values = identityFields.Select(field => basicEntity.GetType().GetField(field, BindingFlags.NonPublic | BindingFlags.Instance)?.GetValue(basicEntity)?.ToString()).Aggregate(new StringBuilder(), (sb, value) => sb.Append(value)).ToString(); if (verifySet.Contains(values)) { sameList.Add(basicEntity); _excelErrorLogService.AddErrorLog(basicEntity.MigrationRowNum.ToString(), $"Fields {string.Join(",", identityFields)} values repetition", keyValuePair.Key); } else { verifySet.Add(values); } } keyValuePair.Value.RemoveAll(sameList.Contains); } } } return readExcelResp; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值