也许我漏掉了一些愚蠢的东西,但到目前为止,搜索还没有找到任何东西. 我在我的类上实现了List<T>,当使用MyList.Where()函数时,它不会转换回MyList对象?

public class VideoList : List<Video>
{
    public VideoList GetVideos(bool onlyShorts)
        => (VideoList)this.Where(x => x.IsShort.Equals(onlyShorts)).ToList();
}

投掷错误:

无法将类型WhereListIterator1[Video]的对象强制转换为类型VideoList.

try 了一些不同类型的铸造,如网上建议,但到目前为止,我还没有通过这个错误. 我也试过this次,但同样的问题. 可能是一些语义? 有没有一种方法可以解决这个错误,而不需要foreach在linq语句之后重新创建列表?

推荐答案

this.Where(x => x.IsShort.Equals(onlyShorts)).ToList()

生成"List<;Video>;",不能为upcasted以输入VideoList.

如果你仍然希望GetVideos返回VideoList,你需要拥有并使用适当的构造函数(作为一个可能的解决方案):

public VideoList(List<Video> videolist) { ... }

public VideoList GetVideos(bool onlyShorts)
    => new VideoList(this.Where(x => x.IsShort.Equals(onlyShorts)).ToList());

Csharp相关问答推荐

如果存在对CodeAnalysis.CSharp的引用,则不能引用netStandard2.0库

如何使用XmlSerializer反序列化字符串数组?

如何定义EFCore中的多个穿透

C#.NET依赖项注入顺序澄清

如何测量在使用UTF8而不是C#中的UTF16编码字符串时内存使用量的增长

在允许溢出的情况下将小数转换为长

持有者安全定义未显示在Swagger.NET 8中

如何捕获对ASP.NET核心应用程序的所有请求并将其发送到一个页面

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

是否由DI容器自动处理由ActivatorUilties.CreateInstance()创建的服务?

使用System.Text.Json进行序列化时发生StackOverflow异常

我什么时候应该在Dapper中使用Connection.OpenAsync?

如何返回具有泛型的类?

CRL已过期,但ChainStatus告诉我RevocationStatus未知

我的命名管道在第一次连接后工作正常,但后来我得到了System.ObjectDisposedException:无法访问关闭的管道

如何设置WinForms按钮焦点,使其看起来像是被Tab键插入其中?

Xamarin Forms应用程序中登录页面的用户名和密码编辑文本之间不需要的空格

使用postman 测试配置了身份的.NET 6应用程序

获取应用程序版本信息时出现奇怪信息

Excel将';@';添加到具有范围的公式中