如何使用Linq和Entity Framework获取不同的,不区分大小写的列表

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.

似乎应该有一个简单的方法来做到这一点,但我找不到它.

Mrc*_*ief 3

我尝试了你说的各种方法,但都失败了。然而我得到了这个工作:

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)

请随意调整以满足您的需求。

小提琴