2014-10-05 61 views
1

如何從表中選擇特定列?我試試這個顯示錯誤 不能隱式地將類型'System.Linq.IQueryable'轉換爲'System.Linq.IQueryable'。存在明確的轉換,你是否缺少演員?無法將類型'System.Linq.IQueryable <Anon>'隱式轉換爲'System.Linq.IQueryable <Report>顯式轉換存在,您是否缺少轉換?

var query = myRepository.Query().AsQueryable(); 

query = query.Select(f => 
         new 
         { 
          f.Name, 
          f.Email, 
          f.Message, 
          f.Succeeded, 
          f.ExecutedOn, 
          f.CreatedOn, 
          f.DeletedOn 
         }).Where(file => file.DeletedOn == null).OrderByDescending(f => f.CreatedOn); 

return query.ToList(); 

但是當我嘗試這樣它的工作原理,

if (!String.IsNullOrEmpty(searchModel.Name)) 
      { 
       query = query.Where(f =>f.Name.Contains(searchModel.Name)); 
      } 
query = query.Where(file => file.DeletedOn == null).OrderByDescending(file => file.CreatedOn); 
+0

你的問題是什麼?沒有關於你想要的細節。請提供更多詳細信息,以便有人幫助您 – vikas 2014-10-05 04:12:20

回答

4

您的第一個查詢是生成一個匿名類型。如果你想在你Select通話Report對象則拉姆達的名單有可能創造一個Report對象,即這樣的:

f => 
         new 
         { 
          f.Name, 
          f.Email, 
          f.Message, 
          f.Succeeded, 
          f.ExecutedOn, 
          f.CreatedOn, 
          f.DeletedOn 
         } 

應該是這樣的:

f => 
         new Report 
         { 
          f.Name, 
          f.Email, 
          f.Message, 
          f.Succeeded, 
          f.ExecutedOn, 
          f.CreatedOn, 
          f.DeletedOn 
         } 
0

你已經初始化類型的IQueryable<Query>但後來隨着IOrderedQueryable<AnonymousType>類型的值分配,因爲這兩種類型不匹配的查詢,會引起編譯時錯誤。這裏的問題是內部類型(QueryAnonymousType)。請修改您的查詢如下。

var query = myRepository.Query().AsQueryable() 
       .Select(f => 
        new 
        { 
         f.Name, 
         f.Email, 
         f.Message, 
         f.Succeeded, 
         f.ExecutedOn, 
         f.CreatedOn, 
         f.DeletedOn 
        }).Where(file => file.DeletedOn == null).OrderByDescending(f => f.CreatedOn); 

return query.ToList(); 
+1

這是不正確的。 'IOrderedQueryable '繼承'IQueryable '所以沒有問題將前者的實例分配給後一類型的變量。它不會以其他方式工作,但這不是問題。看看標題中的錯誤信息;不同的是'IQueryable'的泛型類型。 – jmcilhinney 2014-10-05 04:30:45

+0

請參閱我編輯的答案,我之前也提到過相同的問題,但是由於< and >中的符號行爲,在我的答案和內部類型中不是showm,即在回答問題時未提及Anon和Report。 – vikas 2014-10-05 06:26:31

1

製作新的Class對象,然後用它

var result = from mr in myRepository 
        where mr.DeletedOn == null 
        orderby mr.CreatedOn descending 
        select new NewRepository 
        { 
          mr.Name, 
        mr.Email, 
        mr.Message, 
        mr.Succeeded, 
        mr.ExecutedOn, 
        mr.CreatedOn, 
        mr.DeletedOn 
        }; 

如果u有任何錯誤,那麼讓我知道烏爾myRepository數據類型

相關問題