資料如下

如果想去除name相同的物件的話,使用T-SQL的話,必須先針對Name做Distinct 再迴圈取出對應的資料

LINQ則可以靠自定義方法的方式來進行複雜的資料提取

四種方法的執行結果如下

直接下Distinct,想當然爾的沒用
先進行欄位篩選再做Distinct,可以取得不重複的Name,但是遺失掉其他的屬性
第三種方法才是理想的結果。

第四種方法是不能執行的,即便將物件的屬性完整取出,也不會被當作原本的Ptype物件,而是一個泛型物件,所以無法使用針對Ptype所寫的自定義方法。

後記:

自定義方法雖然在資料篩選上,雖然會比完全使用T-SQL來的方便。但是再使用時須針對每個物件重新編寫,當物件一多的時候相當麻煩。

所以有人使用泛型的寫法,來提升泛用性。相關寫法可參考

https://dotblogs.com.tw/larrynung/2012/09/18/74901

參考資料

MSDN

--

--

莊創偉

學海無涯。但是為了生計還是得下海的風塵男子