使用linq将数据从一个列表添加到另一个列表

时间:2019-04-09 23:14:18

标签: c# linq

我需要在我的UI中填充一个下拉列表,因此将List对象添加到我的C#应用​​程序的视图模型中。我正在我的控制器代码中获取数据以进行下拉。将数据分配给viewmodel对象的最佳方法是什么? linq是一个选择吗?

我基本上需要将资金类别分配给fundTrackRecord.FundClass

主要Viewmodel:

public class FundPerformanceVM
{
    public FundPerformanceVM()
    {
        TrackRecord = new List<TrackRecordVM>();
    }

    public int FundId { get; set; }
    public string FundName { get; set; }
    public List<FundClassVM> FundClass { get; set; }
    public string BenchmarkName1 { get; set; }
    public string BenchmarkName2 { get; set; }
    public List<TrackRecordVM> TrackRecord { get; set; }
    public List<Tuple<string, string, string>> FundStatistics { get; set; }

}

public class FundClassVM
{
    public int FundClassId { get; set; }
    public string FundClass { get; set; }
}

控制器代码:

var service = GetViewService<V_LEGAL_FUND_CLASS_SUMMARY>();

foreach (KeyValuePair<int, IEnumerable<FUND_PERFORMANCE>> entry in allPerformance)
{
   var fundClasses = service.GetAll().Where(x => x.FUND_ID == entry.Key).Select(x => new { x.LEGAL_FUND_CLASS_ID, x.LEGAL_FUND_CLASS}).ToList();
   var fundTrackRecord = new FundPerformanceVM();     

   fundTrackRecord.FundClass = ??;

1 个答案:

答案 0 :(得分:0)

如果我正确理解了模型的结构,则可以尝试以下方法:

fundTrackRecord.FundClass = fundClasses.Select(fc => new FundClassVM
{
    FundClassId = fc.LEGAL_FUND_CLASS_ID,
    FundClass = fc.LEGAL_FUND_CLASS
}).ToList();

您也可以直接执行以下操作,替换代码:

var fundClasses = service.GetAll().Where(x => x.FUND_ID == entry.Key).Select(x => new { x.LEGAL_FUND_CLASS_ID, x.LEGAL_FUND_CLASS}).ToList();
var fundTrackRecord = new FundPerformanceVM();

使用:

var fundTrackRecord = new FundPerformanceVM();
fundTrackRecord.FundClass = service.GetAll().
    Where(x => x.FUND_ID == entry.Key).
    Select(fc => new FundClassVM
    {
        FundClassId = fc.LEGAL_FUND_CLASS_ID,
        FundClass = fc.LEGAL_FUND_CLASS
    }).ToList();