2013-04-10 55 views
0

我想從Linq查詢中將值添加到我的DatagridTextcolumn。將Linq綁定到Datagridtextcolumn

我曾嘗試:

DataGridTextColumn test = new DataGridTextColumn(); 
test.Binding = new Binding("test"); 
dgServer.Columns.Add(test); 

dgServer.Items.Add(new Person() 
{ 
    Status = Convert.ToBoolean(from a in db.Persons 
      from d in db.PersonDetails 
      where a.pID == d.pDID && a.State == "Active" 
      select a) 
}); 

XAML

<DataGridTextColumn x:Name="test" Binding="{Binding}" Header="test"/> 

我對上面的代碼異常,說

無法投類型的對象System.Data .Objects.ObjectQuery`1鍵入'System.IConvertible'。

如何綁定到從LINQ到SQL的DatagridTextcolumn綁定。

好心幫

回答

0

這是有問題的代碼 -

Status = Convert.ToBoolean(from a in db.Persons 
      from d in db.PersonDetails 
      where a.pID == d.pDID && a.State == "Active" 
      select a) 

查詢內將返回IEnumerable of type Person和你想這顯然轉換爲Boolean將不能編譯,因爲沒有從IEnumerable<Person>implicit conversionBoolean

0

問題是,您正試圖轉換linq查詢,而不是該查詢的結果。這個問題來自Linq的推遲執行模型。嘗試添加「FirstOrDefault()」方法,你ToBoolean調用的參數:

Status = Convert.ToBoolean((from a in db.Persons 
     from d in db.PersonDetails 
     where a.pID == d.pDID && a.State == "Active" 
     select a).FirstOrDefault()) 

羅希特也有一個很好的點 - 你需要確保比你實際上可以從類型的人轉變爲布爾

+0

謝謝爲更新,但如何將此綁定到DatagridTextcolumn綁定屬性? – user1221765 2013-04-10 18:56:27

+0

@ Buba1947有了這個答案,它會是'',所以你忘了路徑。 – Silvermind 2013-04-10 21:16:04