このコードは私に迷惑をかけていますこのコードは不明ですが、コードの臭いがあります!
別のオブジェクトEventDistanceを作成しましたが、おそらくそれは必要ではないと思われます。距離はイベントの部分クラスに追加したプロパティです。基本的には、すべてのイベントを返信し、距離順に並べ替える必要があります。
私はforeachの余分なラウンドがおそらく必要ではないと考えています。
public IQueryable<Event> FindByLocation(float latitude, float longitude)
{
var eventsList = from ev in GetAllEvents()
join i in db.NearestEvents(latitude, longitude)
on ev.ID equals i.ID
select new EventDistance() { TheEvent = ev, Distance = i.Distance };
foreach (var item in eventsList)
{
item.TheEvent.Distance = item.Distance;
}
return eventsList.OrderBy(e => e.Distance).Select(e => e.TheEvent);
}
LINQ式がSQLに変換しようとするプロバイダによって処理されている場合、これはおそらく機能しません。メモリ内のオブジェクトに対して発生する場合、それは動作するはずです。 –
@qstarin oops、はい、良い点。 – Rup
re#2、選択/投影(または必要な場合)の前に.ToList()を挿入すると、IQueryableの評価が強制され、DBオブジェクトがロードされます。 –