gpt4 book ai didi

c# - 将 IEnumerable 转换为 IEnumerable

转载 作者:太空宇宙 更新时间:2023-11-03 20:11:35 26 4
gpt4 key购买 nike

我正在尝试转换 IEnumerable属于 IEnumerable 的继承类型基类。

已尝试以下操作:

var test = resultFromDb.Cast<BookedResource>();

return test.ToList();

但是出现错误:

You cannot convert these types. Linq to Entities only supports conversion primitive EDM-types.

涉及的类如下所示:

public partial class HistoryBookedResource : BookedResource
{
}

public partial class HistoryBookedResource
{
public int ResourceId { get; set; }
public string DateFrom { get; set; }
public string TimeFrom { get; set; }
public string TimeTo { get; set; }
}

public partial class BookedResource
{
public int ResourceId { get; set; }
public string DateFrom { get; set; }
public string TimeFrom { get; set; }
public string TimeTo { get; set; }
}

[MetadataType(typeof(BookedResourceMetaData))]
public partial class BookedResource
{
}

public class BookedResourceMetaData
{
[Required(ErrorMessage = "Resource id is Required")]
[Range(0, int.MaxValue, ErrorMessage = "Resource id is must be an number")]
public object ResourceId { get; set; }

[Required(ErrorMessage = "Date is Required")]
public object DateFrom { get; set; }

[Required(ErrorMessage = "Time From is Required")]
public object TimeFrom { get; set; }

[Required(ErrorMessage = "Time to is Required")]
public object TimeTo { get; set; }
}

我要解决的问题是从表 HistoryBookedResource 中获取记录并在 IEnumerable<BookedResource> 中得到结果使用 Entity Framework 和 LINQ。

更新:

当使用以下 cast 接缝工作时,但当尝试使用 foreach 循环时,数据丢失。

resultFromDb.ToList() as IEnumerable<BookedResource>;

更新 2:

我使用 Entity Framework 生成模型,模型 (edmx) 从数据库创建,edmx 包含代表数据库表的类。

在数据库中,我有一个旧 BookedResource 的历史表,可能会发生用户想要查看这些并从数据库 Entity Framework 中获取旧数据的情况,使用与表同名的类从 db 接收数据.所以我从 HistoryBookedResource 类中的表 HistoryBookedResource 接收数据。

因为 Entity Framework 生成的部分类具有我不知道是否可以将它们虚拟化并覆盖的属性。

如有任何建议,我们将不胜感激。

最佳答案

通常您使用 AsEnumerable<T> 在这种情况下:

var test = resultFromDb.AsEnumerable().Cast<BookedResource>();

这样做的好处是不会一次枚举整个结果(您不会失去惰性)。

关于c# - 将 IEnumerable<Inherited> 转换为 IEnumerable<Base>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19734739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com