BDW*_*BDW 5 c# linq entity-framework
我需要从实体框架查询的结果中获取不区分大小写的列表.我有以下内容:
var myList = myEF.GroupBy(e => new { e.Code, e.Description })
.Select(e => e.First())
.ToList();
Run Code Online (Sandbox Code Playgroud)
这给了我一个独特的列表,但它区分大小写.我需要不区分大小写.
我想我应该可以这样做:
var myList = myEF.GroupBy(e => new { e.Code, e.Description }, StringComparer.InvariantCultureIgnoreCase)
.Select(e => e.First())
.ToList();
Run Code Online (Sandbox Code Playgroud)
但这似乎并不想与匿名对象一起使用.
添加.ToLower或.ToLowerInvariant似乎也不起作用.也没有使用Distinct(StringComparer.InvariantCultureIgnoreCase)而不是GroupBy.
似乎应该有一个简单的方法来做到这一点,但我找不到它.
我尝试了你说的各种方法,但都失败了。然而我得到了这个工作:
var distinct = list.Distinct(new CaseInsensitiveComparer());
public class CaseInsensitiveComparer : IEqualityComparer<A>
{
public bool Equals(A x, A y)
{
return x.Code.Equals(y.Code, StringComparison.OrdinalIgnoreCase) &&
x.Description.Equals(y.Description, StringComparison.OrdinalIgnoreCase);
}
public int GetHashCode(A obj)
{
return obj.Code.ToLowerInvariant().GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
请随意调整以满足您的需求。