2012-04-25 137 views
1

如何使用AutoMapper将匿名列表映射到T列表?映射使用自动映射器

例如:

class Test{ 
    public string a1{get;set]} 
    public string a2{get;set;} 
} 

//....Entity Framework 4.3.1 
var t=from z in db select {z.a1,z.a2}; 

var tmp=AutoMapper.Mapper.DynamicMap<List<Test>>(t); 

但TMP始终是空

如何解决呢?

+1

它没有动态映射工作吗?像Mapper.CreateMap (); var tmp = Mapper.Map ,List >(t); – daryal 2012-04-25 14:55:36

+0

var t是匿名类的IQueriable,不能与此表单一起使用(db.test) – user1356462 2012-04-25 15:06:42

回答

1

您将需要调用t.ToList()来执行查询第一

var tmp=AutoMapper.Mapper.DynamicMap<List<Test>>(t.ToList()); 
+0

已测试但无效! – user1356462 2012-04-25 15:04:43

+0

daft问题可能,但调用t.ToList()返回预期数量的项目? – bhiku 2012-04-25 15:22:15

+0

当然,但不起作用... – user1356462 2012-04-25 15:46:19

0

你怎么样改变

var t=from z in db select new Test 
          { 
          a1 = z.a1, 
          a2 = z.a2 
          } 

编辑 允许映射到动态类型,可以参考existing post

+0

谢谢。使用这种模式LINQ AutoMapper不需要,但是如果LINQ查询返回比Test类多的字段,则不起作用。有没有其他解决方案? – user1356462 2012-04-25 15:54:44

+0

@ user1356462:你有没有找到其他解决方案? – Turbot 2012-04-27 12:48:31

+0

不!这是AutoMapper报告的错误。我用lambda表达式代替它.. – user1356462 2012-04-28 14:14:29