如何将一个通用列表转换为另一个

时间:2013-10-14 04:37:38

标签: c# entity-framework list

public static List<IndianAppStore_GetAllAppsByLanguage_ResultCache> GetAllApps(bool initialized, string language)
{
    List<IndianAppStore_GetAllAppsByLanguage_ResultCache> objApp = new List<IndianAppStore_GetAllAppsByLanguage_ResultCache>();

    List<IndianAppStore_GetAllAppsByLanguage_Result> objApps = new List<IndianAppStore_GetAllAppsByLanguage_Result>();

    if (initialized == false)
    {
        var t = ListCopy(objApps, x => (IndianAppStore_GetAllAppsByLanguage_ResultCache)x); // Error
        objApp = admin.getAllAppsByLanguage(language).ToList();
    }
    else
    {
    }
}

public static List<TResult> ListCopy<TSource, TResult>(List<TSource> input, Func<TSource, TResult> convertFunction)
{
    return input.Select(x => convertFunction(x)).ToList();
}
  

我的班级

public class IndianAppStore_GetAllAppsByLanguage_ResultCache
{
    public long AppId { get; set; }
    public string AppName { get; set; }
    public string AppDisplayName { get; set; }
    public string AppDetails { get; set; }
    public string AppImageURL { get; set; }
    public byte[] AppImageData { get; set; }
    public long CategoryId { get; set; }
    public Nullable<long> SubCategoryId { get; set; }
    public string AppCreatedBy { get; set; }
    public System.DateTime AppCreatedOn { get; set; }
    public string AppModifiedBy { get; set; }
    public Nullable<System.DateTime> AppModifiedOn { get; set; }
    public Nullable<bool> isDeleted { get; set; }
    public Nullable<bool> isPromotional { get; set; }
    public string GenderTarget { get; set; }
    public Nullable<long> CountryId { get; set; }
    public Nullable<long> StateId { get; set; }
    public Nullable<long> AgeLimitId { get; set; }
    public Nullable<int> AppMinAge { get; set; }
    public Nullable<int> AppMaxAge { get; set; }
}

enter image description here

我正在尝试将一个通用类转换为另一个但却出现此错误

1 个答案:

答案 0 :(得分:1)

IndianAppStore_GetAllAppsByLanguage_ResultIndianAppStore_GetAllAppsByLanguage_ResultCache是不同的类型,您不能像在此声明中那样将第一种类型转换为另一种类型:

var t = ListCopy(objApps, x => (IndianAppStore_GetAllAppsByLanguage_ResultCache)x);

如果类型具有相同的结构,您应该只有一种而不是两种类型。否则,您必须将数据从第一种类型复制到另一种类型。 E.g:

var t = ListCopy(objApps, x => new IndianAppStore_GetAllAppsByLanguage_ResultCache {
  AppId = x.AppId,
  AppName = x.AppName,
  ...
});

这很快就变得单调乏味,一种选择是使用像AutoMapper这样的库来自动化这个过程。