我有以下代碼嘗試並找到一個新的唯一值1000-10000之間,我可以分配給一個userId。我這樣做,通過查詢數據庫爲所有的用戶id和找到第一個未使用的一個:IEnumerable.Contains()保留查詢數據源而不是內存
var users = userDbContext.Data.Select(a => a.UserId);
for (int i = 1000; i < 10000; i++)
{
if (!users.Contains(i))
{
this.Id = i;
break;
}
}
出於某種原因,這個循環的每次迭代查詢的數據庫表,而不是僅僅詢問什麼是在內存中。任何想法如何解決這個問題?
請記住,查詢是*問題*,而不是*答案*。你說「問數據庫這個問題九千次」,這就是你得到的。 –