2010-10-28 52 views
0

我想檢查使用Linq-To-Entities的實體框架中的重複項,忽略大小寫。什麼是最好的方式來做到這一點?據我所知,上下文。[Entity] .Contains(item,IEqualityComparer)方法不受支持。實體框架,檢查重複項忽略大小寫

我必須做ToList(),它將整個表讀入內存只是爲了檢查它嗎?

感謝,

回答

1

說實話,以查找重複的最好的地方是在獸的肚子 - 數據庫。更容易/更快。

但是,如果必須在代碼中做到這一點,你可以嘗試StringComparer.OrdinalIgnoreCase

StringComparer comparer = StringComparer.OrdinalIgnoreCase; 
var caseInsensitiveResults = ctx.SomeObjectSet.Where(x => comparer.Equals(x.Field1, x.Field2)); 

由於.Equals的StringComparer對象的方法返回true/false,那麼可以用它作爲謂詞。

您是否試圖在一張表中查找重複項?在您的特定場景中定義「重複」,可能會幫助我們幫助您。

編輯

因爲你說你在一個表中尋找重複的行,上面將無法工作。這只是一個例子。

您需要在GroupBy子句中使用該比較器代碼。

但是,我仍然認爲你應該在數據庫中做到這一點。

+0

我在單個表格中尋找與「ABCD」「abcd」中相同的副本。 – SmallChess 2010-10-28 00:26:16

+0

你打算在代碼本身「修復」它們嗎?或者這只是一個報告? – RPM1984 2010-10-28 00:33:17

+0

只要它有效,放在哪裏並不重要。 – SmallChess 2010-10-28 00:34:35