private IQueryable<SubjectDataViewModel> GetData()
{
var subject = this.DbContext.Subjects.AsQueryable(); //sql view
var data =
from subject in subjects
let treatment = this.DbContext.TreatmentFactor.FirstOrDefault(x => x.TreatmentFactorId == subject.ActiveTreatmentFactor)
select new SubjectDataViewModel
{
Name = subject.Name,
Gender = subject.Gender,
Version = subject.Version.IsEnumToValueDisplay() // extented method which displays enum DisplayName property into string
};
return data.AsQueryable();
}
這是我根據上面的查詢填充的視圖模型。
public class SubjectDataViewModel
{
public string Name {get;set;}
public string Gender {get;set;}
public string Version {get;set;} // string type return
}
這是主題 Sql 視圖
public class Subjects
{
public string Name {get;set;}
public string Gender {get;set;}
public Version Version {get;set;} // enum return type
}
用于 Version 的列舉。需要在 linq 查詢中使用 ToEnumDiplayValue() 擴展方法來提取顯示名稱,即原始而不是資料庫值,即 0 和 1 將顯示第一個或第二個。
public enum Version
{
[Display(Name = "Original")]
first= 0,
[Display(Name = "Not Original")]
second = 1,
}
所以我想獲得版本的 DisplayName ,這可以通過使用我們自己的擴展方法來完成,該方法使用反射從 enum 中獲取 Display 名稱。但我不能在記憶體物件中使用它。它必須轉換為 .ToList() 。這就是我想要的。我希望我很清楚。感謝您的時間 。到目前為止,我的代碼將拋出錯誤訊息,因為我無法在 Linq 中使用擴展屬性。
uj5u.com熱心網友回復:
嘗試
private IQueryable<SubjectDataViewModel> GetData()
{
var subject = this.DbContext.Subjects.AsQueryable(); //sql view
var data =
from subject in subjects
let treatment = this.DbContext.TreatmentFactor.FirstOrDefault(x => x.TreatmentFactorId == subject.ActiveTreatmentFactor)
select new SubjectDataViewModel
{
Name = subject.Name,
Gender = subject.Gender,
VersionEnum = subject.Version // Version Enum
};
return data.AsQueryable();
}
使用下面的代碼將 GetData() 轉換為串列,然后使用 IsEnumToValueDisplay() 方法。
var list = GetData().ToList();
foreach (var item in list)
{
item.Version = item.VersionEnum.IsEnumToValueDisplay(); // Get value from Version Enum
}
更改模型 SubjectDataViewModel
public class SubjectDataViewModel
{
public string Name {get;set;}
public string Gender {get;set;}
public Version VersionEnum {get;set;}
public string Version {get;set;}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431545.html
