2013-10-02 59 views
3

這是一個SL/WPF應用程序,試圖顯示兩列。以下代碼:顯示兩列

MyDomainContext context = new MyDomainContext(); 
dataGrid1.ItemsSource = context.DBTables; 
context.Load(context.GetTwoDataBasesQuery()) 

;

的domainservice.cs包含方法定義如下:

public IQueryable<DBTable>GetTwoDataBases() 
    { 
    return this.ObjectContext.DBTables; 
    } 

此代碼工作正常,但返回的背景下 我需要如下

public IQueryable<DBTable>GetTwoDataBases() 
    { 
     //trying to return columns 
     return GetDBTables().Select(m => new { m.col1, m.col2 });       
    } 
返回只有兩列,以便改變是所有列

但編譯器生成錯誤,不接受「返回」。

以下錯誤無法隱式轉換類型 'System.Linq.IQueryable' 到 'System.Linq.IQueryable'。存在明確的 轉換。

如何僅返回兩列? 許多THANX

回答

1

要退回匿名類型,但你必須收集的返回類型爲DBTable。您可以創建返回類型object或定義新的class並創建該類的對象。

使對象作爲返回類型

public object GetTwoDataBases() 
{ 
    //trying to retrun columns 
    return GetDBTables().Select(m => new { m.col1, m.col2 });  
} 

OR,返回,而不是匿名類型的IQueryable

public IQueryable<YourCustomType>GetTwoDataBases() 
{ 
    //trying to retrun columns 
    return GetDBTables() 
      .Select(m => new YourCustomType { YourCustomTypeProperty1 = m.col1, YourCustomTypeProperty2 = m.col2 });  
}