繁体   English   中英

迭代匿名类型列表的对象属性

Iterate over object properties of an anonymous type list

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用EPPlus创建“导出到Excel”帮助程序。 这将基本上采用匿名列表并使用该列表填充电子表格。

我希望能够迭代列表对象的属性,并确定哪个是datetime并适当地格式化该列。 我在下面的代码工作,但有一个更简洁的方式来编写这个 - 特别是我不依赖于从列表中拉出一个对象并操作该对象(即我从列表本身获取属性类型) )?

    private static string[] columnIndex = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z".Split(',');
    private static ExcelWorksheet CreateAndFormatWorksheet<T>(OfficeOpenXml.ExcelPackage pck, List<T> dataSet)
    {
        ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Monet_Export_" + DateTime.Now.ToString());
        ws.Cells["A1"].LoadFromCollection(dataSet, true);

        if (dataSet.Count > 0)
        {
            // Pull first list item to determine so we have something to iterate over below
            dynamic first = dataSet[0];

            // List count == upper row count for the spreadsheet
            string rowCount = dataSet.Count.ToString();

            int i = 0;
            foreach (PropertyInfo info in first.GetType().GetProperties())
            {
                if (info.PropertyType == typeof(DateTime))
                {
                    string column = columnIndex[i];
                    string indexer = column + "2:" + column + rowCount;
                    ws.Cells[indexer].Style.Numberformat.Format = "mm/dd/yyyy";
                }
                else if (info.PropertyType == typeof (int))
                {
                    string column = columnIndex[i];
                    string indexer = column + "2:" + column + rowCount;
                    ws.Cells[indexer].Style.Numberformat.Format = "@";                        
                }

                i++;
            }                
        }

        return ws;
    }
1 个回复

您可以使用typeof(T).GetProperties()获取类型T的属性。 这也适用于匿名类型。

然后,您不需要拉出第一个项目来检查其属性,也不必检查dataSet.Count > 0 (如果您想允许空的电子表格)。

1 如何在C#中遍历匿名对象的属性?

我想将一个匿名对象作为方法的参数,然后遍历其属性以将每个属性/值添加到动态ExpandoObject 。 所以我需要从 了解每个属性的名称和值,并将其添加到ExpandoObject 。 我该如何完成? 旁注:这将在我的许多单元测试中完成(我正在使用它来重构设置中的许多 ...

2 遍历匿名对象

我有以下包含数组的对象: 我正在对其进行迭代以获取其关键值,如进一步使用它;使用for in获取其内部的数据。 但是它甚至没有进入循环以获取数组。 我想念什么? ...

3 遍历对象属性

在我的aurelia应用程序中,我需要显示一个元素列表。 出于性能原因,这些元素存储为javascript对象而不是数组。 那就是对象的样子: 这是模板中显示这些元素的部分: 如您所见,我当前正在使用一个值转换器来迭代我的对象属性。 值转换器将对象简单地转换为数组: ...

8 遍历.NET中的匿名类型的集合

我对C#和VB.NET都很好 我有一个函数GetListOfBook ,它将LINQ返回到SQL结果,该结果具有如下对象的集合: var result = GetListOfBook(); Book是具有Title和ISBN属性的Book对象, 类别是字符串 ...

9 获取/迭代不在对象中的属性

根据这个问题 ,我需要检查属性是否不在对象中: 因此,我们有一些样式: ...和这样的对象: 现在,我需要遍历下一个/上一个框架 -item中没有的所有属性,以使用来自jQuery对象的css值填充缺少的属性。 这样最终的对象看起来像这样: 我已经尝试过这样的 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM