2012-04-25 163 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