我會非常傾向於修復數據庫。你不要在你的問題中說哪個字段是字符串,哪個是小數,但是不管怎樣,我不認爲使用小數作爲關鍵字是有意義的。如果它們都是字符串,整數或GUID,會更好。儘管如此,你還有其他選擇。
第一個選項是添加一個視圖或一個存儲過程,在字段到達EF之前轉換其中一個字段。
另一種選擇是將較小的一組數據存入內存並通過代碼強制轉換。如果我認爲GiftCards
越小集和OwnerId
是小數,那麼你可以試試這個:
var gcs = gge.GiftCards
.Select(gc => gc.OwnerId)
.ToDictionary(x => x.OwnerId.ToString(), x => x);
var gcIds = gcs.Keys.ToArray();
var results = (
from p in gge.Customers
where gcIds.Contains(p.customer_Key)
select p)
.ToArray()
.GroupBy(p => p.customer_Key)
.Select(p => new MyCardViewModel
{
GiftCard = gcs[p.Key],
Customers = p.ToArray(),
});
做這些查詢會導致查詢,如要執行以下操作:
SELECT ...
FROM [GiftCards] AS t0
SELECT ...
FROM [Customers] AS t0
WHERE t0.[customer_Key] IN ("1", "2", "3", ..., "1442")
設我知道這是否適合你。乾杯。
可能在ESQL中,但是...我會修改數據庫。 – 2010-11-03 20:26:54
hahaha,謝謝:)這有點奇怪,因爲字符串字段可以指向其他字段,在這種情況下它是一個小數字段。 – Michel 2010-11-04 22:47:30