2015-08-28 106 views
-5

我正在使用LINQ來編寫查詢,無論何時我在表單中創建一個新條目,性別下拉列表都會在該列表中生成重複項。如果我創建了2個新條目,則可以選擇這樣的兩個選項。 [男性 女性 男性 男性 ]。 我的項目是visual studio-angularJS-web api-linq-sql-entity框架。如何使用linq避免下拉列表中的重複項?

+4

您可能需要向我們展示您的代碼,以便獲得答案。 – Nanhydrin

+0

聽起來你正在尋找'Distinct()'LINQ方法。 – David

+0

我不能顯示我的代碼因爲這個項目有一些限制 –

回答

2

var filteredList = originalList 
    .GroupBy(x => x.Gender) 
    .Select(group => group.First()); 
+0

這一個真的很好選擇不同的值,但是有沒有限制性別表中的新值? –

+0

你的意思是在數據庫表中嗎?您可以添加一個唯一的約束來避免重複輸入。 – Jay

+0

你是否想要我添加一個新的檢查約束? –

0

的Linq具有鮮明的()方法,該方法將使用默認的相等方法,以確保只有一個返回每個項目的副本。

var items = new List<string>{'bob', 'frank', 'bob', 'jim'}; 
var distinctItems = items.Distinct(); 
//items should have 3 items, bob frank and jim 

但是,如果你處理的對象的默認平等方法將參照 - 這意味着你會得到每個對象的一個​​副本,但具有相同領域的兩個對象不會被視爲相等。要解決這個問題,你需要重載Equals和GetHashCode。

此外,訂單項目將出現Distinct不能保證。

+0

我有一個特殊的表中的性別在sql中,我將它作爲實體。那麼有什麼辦法嗎? –

+0

謝謝,但我只是通過把這個作爲評論,它的工作 –

+0

公衆詮釋? GenderID {get;組; } // public virtual Gender Gender {get;組; } –