アイテムのリストを呼び出し、foreach ループを使用して各レコードを同じテーブル内の他のレコードと比較するパフォーマンスの問題があります。データベースへの1回の呼び出しでこれを行う方法はありますか? 現在、大きなテーブルと比較すると、このクエリの実行は非常に遅くなります。
Entity Framework 5 を使用しています。
次に例を示します。
var animals = new List<Animal>
{
new Animal
{
Id = 1,
Name = "Tiger",
Birthday = new DateTime(2012, 01, 01, 9, 0, 0)
},
new Animal
{
Id = 2,
Name = "Tiger",
Birthday = new DateTime(2012, 01, 01, 20, 0, 0)
},
new Animal
{
Id = 3,
Name = "Lion",
Birthday = new DateTime(2012, 01, 01, 7, 0, 0)
},
new Animal
{
Id = 4,
Name = "Lion",
Birthday = new DateTime(2012, 01, 01, 14, 0, 0)
},
};
var animalsToCompareTo = animals.Where (a => a.Id == 2 || a.Id = 4);
foreach (var animalToCompareTo in animalsToCompareTo)
{
bool isTheSecondTigerOfTheDay = animals.Any (a => a.Name == animalToCompareTo.Name &&
a.Birthday.Day == animalToCompareTo.Birthday.Day &&
a.Birthday.Month == animalToCompareTo.Birthday.Month &&
a.Birthday.Year == animalToCompareTo.Birthday.Year &&
a.Birthday < animalToCompareTo.Birthday
);
if (isTheSecondTigerOfTheDay)
{
//do something
}
}