10
A
回答
14
您可以編寫一個IEqualityComparer
比較ID
值並將其傳遞到overloaded Queryable.Distinct method,但由於這是LINQ to SQL,因此它不會在數據庫上受支持。您必須添加對AsEnumerable
method的調用才能使其正常工作,但這不建議用於大量數據,因爲您會將數據帶到客戶端。如果你決定走這條路,你將最終獲得類似的查詢:
var query = dc.Operators.AsEnumerable().Distinct(new OperatorEqualityComparer());
另一種選擇,這使數據庫做的工作,就是按ID
並採取各組中的第一項:
var query = from p in dc.Operators
group p by p.ID into groups
select groups.First();
7
如果你想添加要做到這一點作爲一個擴展方法的能力,這裏有一個叫做DistinctBy
方法,這需要在源和的KeySelectors作爲參數,並返回不同的項目組。它與Ahmad的第二個查詢完全相同,但看起來更加漂亮。
public static IEnumerable<TSource> DistinctBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector)
{
return source.GroupBy(keySelector).Select(i => i.First());
}
VB:
<Extension()>
Public Function DistinctBy(Of TSource, TKey)(
ByVal source As IEnumerable(Of TSource),
ByVal keySelector As Func(Of TSource, TKey))
As IEnumerable(Of TSource)
Return source.GroupBy(keySelector).Select(Function(i) i.First())
End Function
然後調用這樣的:
var s = (from p in operatorList.DistinctBy(x => x.ID)
select p.ID, p.Name, p.Phone)
相關問題
- 1. 特定領域
- 2. Retrive特定領域
- 3. 與特定領域
- 4. Django的:與特定領域
- 5. F# - 領域特定語言
- 6. 更新特定領域
- 7. ChicagoBoss渲染特定領域
- 8. 通過特定領域
- 9. MySQL的:基於在特定領域
- 10. LINQ不同領域
- 11. 總和某一特定領域的通過匹配特定領域
- 12. 在給定一個特定圖像的特定領域
- 13. 的獨特領域
- 14. LINQ引入新的領域
- 15. 在python選擇特定領域
- 16. 如何查詢在特定領域
- 17. 圖像應在某一特定領域
- 18. 如何計算特定的字符在特定領域SQL
- 19. MYSQL - 在特定的產品替換特定領域文本
- 20. 轉變RDD的特定領域
- 21. 代表我的領域特定語言
- 22. 的MongoDB只讀取特定領域
- 23. 返回特定領域的總
- 24. 暴露特定領域的WCF
- 25. JPA加入特定的領域
- 26. 檢索特定領域的貓鼬
- 27. 定製獨特的領域,以ManyToManyField
- 28. ElasticSearch 5.0的Java獲取特定領域
- 29. 負載特定領域的內容
- 30. jQuery的刪除特定領域
這Q是很像[刪除重複的基於列的值-LINQ( http://stackoverflow.com/q/3446442/590956) – Sam