2010-04-26 47 views
0

在我的數據庫表我有如何使用entity-framework從查詢結果中刪除列重複項?

Key | Value 
a  | 1 
a  | 2 
b  | 11 
c  | 1 
d  | 2 
b  | 3 

但我只需要獲得哪些鍵沒有以前行的重複項目。理想的結果應該是:

Key | Value 
a  | 1 
b  | 11 
c  | 1 
d  | 2 

我們如何使用entity-framework獲得所需的結果?

注意:我們需要第一個值。非常感謝你。

+1

你所說的 「第一」 的意思? – 2010-04-26 01:22:49

+0

關鍵字'a'有2個值,分別是'1'和'2'。第一個值是1.這是基於排序可能是什麼。 – Jronny 2010-04-26 01:32:49

回答

2
var q = from e in Context.MyTable 
     group e by e.Key into g 
     select new 
     { 
      Key = g.Key, 
      Value = g.OrderBy(v => v.Value).FirstOrDefault() 
     }; 
+0

這看起來不錯!如果可能的話,我們如何將它轉換爲lambda?謝謝。 – Jronny 2010-04-27 00:40:12

+0

最簡單的方法是將其輸入到LINQPad中,讓該應用程序將它轉換爲您。 :) – 2010-04-27 00:52:47

+0

正在下載... – Jronny 2010-04-27 01:04:07

1

你應該看看在數據庫中編寫一個視圖並將你的實體映射到該視圖。 或者在EDMX的一部分(也就是最後在SSDL文件中的位)創建一個DefiningQuery。

查看Tip 34瞭解更多信息。

從概念上講,兩種方法都允許您編寫排除「重複行」的視圖。不同之處在於視圖的存在。

如果你有數據庫的控制權 - 我會把數據庫中的視圖 如果不是,你可以把視圖放在你的內部然後映射到數據庫。

希望這有助於

亞歷