【问题标题】:How to convert List<AnonymousType> to List<string>如何将 List<AnonymousType> 转换为 List<string>
【发布时间】:2011-04-19 17:52:10
【问题描述】:

我想将List&lt;AnonymousType&gt; 转换为List&lt;string&gt;。我有以下代码:

var lkpiTodisplay = _MGMTDashboardDB.KPIs.Where(m => m.Compulsory == true && m.Active == true)
                                         .Select(m => new
                                         {
                                             KPI_Name = m.Absolute == true ? m.KPI_Name : (m.KPI_Name + "%")
                                         }).ToList();

for(int i=1; i<= BusinessTargetCol; i++)
{
   lkpiTodisplay.Add(new
   {
      KPI_Name = "Business Target"
   });
}

此代码创建一个List&lt;AnonymousType&gt;。然后我想把这个List赋值给一个变量List&lt;string&gt;,如下代码所示:

DashboardViewModel lYTMDashboard = new DashboardViewModel()
{
      KPIList = (List<string>) lkpiTodisplay,
      //other assignments
};

铸造不起作用。如何转换变量?欢迎使用其他修改第一个代码 sn -p 的解决方案,只要将 KPIList 变量保留为 List&lt;string&gt;

谢谢

弗朗西斯科

【问题讨论】:

  • 永远不要使用== true,这是一种浪费。
  • 看起来你不需要首先创建匿名类,所以不要。
  • @minitech:有趣的论点。就性能而言是浪费?
  • 很小的一个(两个 CPU 操作,可能是几纳秒),但它只会使您的代码文件更大(有时可读性会降低,因为它会出现滚动条)。

标签: c# linq-to-sql .net-4.0 casting anonymous-types


【解决方案1】:

如果可以并且不需要,您可以跳过匿名课程

 lkpiTodisplay.Add("Business Target");

你可以的

lkpiTodisplay.Select( x => x.KPI_Name).ToList();

获取List&lt;String&gt;

【讨论】:

  • 第二种解决方案是我正在寻找的。它是如此简单,我什至没有考虑它!非常感谢
【解决方案2】:

您不能将 List 分配给 List,因为这些类型不兼容。
使用lkpiToDiplay.Select(i =&gt; i.ToString()).ToList()

【讨论】:

    猜你喜欢
    • 2020-01-11
    • 2013-08-26
    • 1970-01-01
    • 2020-11-27
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多