C# 循环遍历列表并提取特定数据
我需要循环查看TrackRecordVM类型的列表,并从只分配给字段名Jan、Feb、Mar、Apr、May、Jun、Jun、July、Aug、Sep、Oct、Nov、Dec的字段中提取数据 这是我正在循环浏览的列表C# 循环遍历列表并提取特定数据,c#,C#,我需要循环查看TrackRecordVM类型的列表,并从只分配给字段名Jan、Feb、Mar、Apr、May、Jun、Jun、July、Aug、Sep、Oct、Nov、Dec的字段中提取数据 这是我正在循环浏览的列表 public class TrackRecordVM { public int Year { get; set; } public decimal? Jan { get; set; } public decimal? Feb { get; set; }
public class TrackRecordVM
{
public int Year { get; set; }
public decimal? Jan { get; set; }
public decimal? Feb { get; set; }
public decimal? Mar { get; set; }
public decimal? Apr { get; set; }
public decimal? May { get; set; }
public decimal? Jun { get; set; }
public decimal? Jul { get; set; }
public decimal? Aug { get; set; }
public decimal? Sep { get; set; }
public decimal? Oct { get; set; }
public decimal? Nov { get; set; }
public decimal? Dec { get; set; }
public decimal? YTD { get; set; }
public decimal? Bmrk { get; set; }
public string BmrkName { get; set; }
}
这是循环。最好的方法是什么
List<TrackRecordVM> trackRecordVm;
foreach (var trackRecord in fundTrackRecord)
{
trackRecordVm = trackRecord.TrackRecord;
foreach (var track in trackRecordVm)
{
}
}
你和林克在一起可能会更轻松 类似于此的内容只需为您需要的任何成员重复以下内容: var jan=trackRecordVm.Selectx=>x.jan.ToList var dec=trackRecordVm.Selectx=>x.dec.ToList var newList=新列表; newList.AddRangejan;
newList.AddRangedec 我不喜欢这样,但你可以完全按照你的要求这样做:
public static void DoIt()
{
TrackRecordVM record = new TrackRecordVM();
string[] months = new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "July", "Aug", "Sep", "Oct", "Nov", "Dec" };
foreach (decimal? value in record.GetType().GetRuntimeProperties()
.Where(p => months.Contains(p.Name))
.Select(pi => pi.GetValue(record, null)))
{
//do stuff
}
}
public class TrackRecordVM
{
public decimal? Jan { get; set; }
public decimal? Feb { get; set; }
public decimal? Not { get; set; }
public IEnumerable<decimal?> GetMonths()
{
yield return Jan;
yield return Feb;
}
}
或者,您可以从记录类中创建可枚举项,如下所示:
public static void DoIt()
{
TrackRecordVM record = new TrackRecordVM();
string[] months = new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "July", "Aug", "Sep", "Oct", "Nov", "Dec" };
foreach (decimal? value in record.GetType().GetRuntimeProperties()
.Where(p => months.Contains(p.Name))
.Select(pi => pi.GetValue(record, null)))
{
//do stuff
}
}
public class TrackRecordVM
{
public decimal? Jan { get; set; }
public decimal? Feb { get; set; }
public decimal? Not { get; set; }
public IEnumerable<decimal?> GetMonths()
{
yield return Jan;
yield return Feb;
}
}
我更喜欢第二个选项,我自己。<如何尝试从只分配给字段名称的字段中查询LIQUEST数据。考虑一下我的意思是字段JAN、FEB、MAR、APR、M5、Jun、七月、AUG、SEP、OCT、NOV,不明确您要问什么。我基本上损坏了包含月份名称以外的字段的列表。我只需要从月份字段提取数据。我尝试了此操作,但获取错误无法将void分配给隐式类型variabletrackRecordVm=trackRecord.trackRecord;var jan=trackRecordVm.Selectx=>x.jan.ToList;var feb=trackRecordVm.Selectx=>x.feb.ToList;var mar=trackRecordVm.Selectx=>x.mar.ToList;var apr=trackRecordVm.Selectx=>x.apr.ToList;var may=trackRecordVm.Selectx=>x.may.ToList;var jun=trackRecordVm.Selectx=>x.jun.ToList;var dec=trackRecordVm.Selectx=>x.dec.ToList;var monthsData=1月AddRangedec;