【问题标题】:System.LINQ.Dynamic: Select(“ new classname (…)”) into a List<T> (or any other enumerable collection of <T>)System.LINQ.Dynamic:Select(“new classname (...)”) 到 List<T>(或任何其他可枚举的 <T> 集合)
【发布时间】:2012-07-28 12:48:37
【问题描述】:

What I want 而不是这样做

var carsPartial = cars.Select("new(name, year)").ToList();

我想这样做:

var carsPartial = cars.Select<car>("new car(name, year)").ToList<car>();

再次感谢,如果需要请要求澄清。

汽车等级:

 public class car
{
    public string name { get; set; }
    public int year { get; set; }
}

什么是汽车:一堆带有名称和年份的汽车数据,有点像数据库。

【问题讨论】:

  • 我不太熟悉将字符串传递给Select,但你能做到car.Select("new car(name, year)").Cast&lt;car&gt;().ToList();吗?
  • 去掉引号,改成new car { Name = name, Year = year }
  • 汽车收藏中有什么??
  • 为什么你的“汽车”类叫“人”?
  • um @Tergiver 我正在尝试使这个动态化,以便以后可以选择显示在 xml 中的字段

标签: c# linq select


【解决方案1】:

您知道编译时 Select 的通用部分吗?在您的示例中,是已知的,还是“动态的”?如果已知,那么您应该可以做到(没有测试过):

var carsPartial = cars.Select("new car(name, year)").Cast<car>().ToList();

【讨论】:

  • 所以我确实知道我要投射的内容将是汽车,但汽车会像“新车(名称)”一样发生变化,然后是“新车(名称,年份) )' 所有的都是字符串,所以我可以编辑它。
【解决方案2】:

使用 LINQ 和类似的东西:

var carsPartial = (from c in cars
  select new car {
    name = c.name,
    year = c.year
    }).ToList();

未完全测试...

【讨论】:

  • 我需要让 select 命令成为一个字符串,这与您正在执行的操作不同,但您编写的操作有效,但它根本不是动态的。它是静态的,请阅读问题和信息。
猜你喜欢
  • 2010-11-30
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 2019-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多