2011-04-14 39 views
1

我有幾個實體對象例如。客戶,從IComparable 派生的所有訂單都映射到數據庫字段。列表類型的數據源Linq

我網格綁定在運行時爲List<Customer>List<Orders>

我寫一個自定義的列級 在那裏我能得到Parent.DataSource(這將永遠是List<>),但實際的類型是未知的。我需要將其轉換爲列表類型(可能爲IList),以便我可以針對數據源編寫linq查詢。

IList t = Parent.DataSource as IList 
var qry = from cl in t 
+1

你認爲是什麼的答案有什麼不好? – Nik 2011-04-14 19:38:27

+0

我不能做一個linq選擇IList – Graci 2011-04-14 19:46:47

回答

0

您應該能夠通過LINQ的Cast()方法和查詢轉換您Parent.DataSource成適當的類型反對:

var query = from customer in Parent.DataSource.Cast<Customer>() 
      where customer.Foo == "Bar" 
      select customer; 
+0

我不知道什麼類型是源...我可以做更通用的東西嗎?數據源可以是我擁有的100個對象實體之一。 – Graci 2011-04-14 19:44:54

+2

如果你不知道它可能是什麼類型,你怎麼能期望它被轉換? – recursive 2011-04-14 19:50:22

+0

@Graci:很難在不知道類型的情況下進行查詢。您可以使用OfType ()來檢索客戶,並檢查它是否爲空 - 但這會很難看。我會考慮看看是否有辦法讓自定義界面可以在你的場景中工作,並讓你的所有實體都實現它... – 2011-04-14 19:57:04

0

您可以在LINQ的使用Cast

var query = from customers in Parent.DataSource.Cast<Customer>() 
      select customers; 

Cast<Customer>將您Parent.DataSource轉換爲您相應的客戶實體