使用LINQ查询判断表中特定值是否重复出现,现有代码编译报错
问题原因
你遇到的编译错误是因为GroupBy返回的元素是IGrouping<TKey, TElement>类型,该类型没有Name属性,你分组时使用的Name字段会作为分组键存在Key属性中。
解决方案
方案1:修正原有分组写法
如果要保留分组的实现逻辑,修改后的代码如下:
var result = myList .GetQueryable() .GroupBy(g => g.Name) .Where(w => w.Key == "myName") .AnyAsync(a => a.Count() > 1);
方案2:更高性能的实现(推荐)
不需要对全表数据做分组操作,仅针对目标名称过滤后判断,ORM生成的SQL执行效率更高:
// 注意AnyAsync是异步方法,需要加await关键字接收结果 var hasDuplicate = await myList .GetQueryable() .Where(x => x.Name == "myName") .Skip(1) .AnyAsync();
该写法逻辑为:找到所有名称为myName的记录后跳过第一条,只要还有剩余记录就说明存在至少2条重复数据,直接返回true,相比先分组再计数的方案性能优势明显。
内容的提问来源于stack exchange,提问作者user7849697
相关产品推荐
相关产品推荐

