将Linq结果集转换为接口

eli*_*472 2 c# linq

我有以下查询:

var result = context.BEntries
    .Where(x => x.a == "a")
    .Select(x => new MyClass()
    {
        a = x.a
    }).ToList();
Run Code Online (Sandbox Code Playgroud)

我得到了类型的结果List<MyClass>.但是,我必须回来IEnumerable<IMyclass>.如何将其转换为通用定义?

SLa*_*aks 7

你不需要.

IEnumerable<T>是协变的; List<MyClass>可以隐式转换为IEnumerable<IMyClass>.


.Net 3.5不使用协方差,因此您需要自己投射.

您可以调用.Cast<IMyClass>()或转换select表达式,IMyClass以便查询IMyClass首先返回.