Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环遍历列表并提取特定数据_C# - Fatal编程技术网

C# 循环遍历列表并提取特定数据

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; }

我需要循环查看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 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;