古いサードパーティのデータベースに接続してデータを取得しようとしていて、現在は廃止されているテキスト フィールドを使用しているため、問題が発生しています。ただし、データベース フィールドを変更できないため、LINQ を介してデータを返そうとすると問題が発生します。以下のコード例:
var query = from s in db.tSearches
join c in db.tCompanies on s.CompanyGUID equals c.GUID
join cl in db.tCompanyLocations on s.LocationGUID equals cl.GUID
join st in db.tSearchTypes on s.SearchTypeGUID equals st.GUID
where s.DateClosed == null
select new
{
Id = s.GUID,
Type = st.GUID,
Location = cl.LocationName,
Company = (s.Confidential) ? String.Empty : c.CompanyName,
DateOpened = s.DateOpened,
Notes = s.PlacementNotes,
Closed = s.DateClosed != null
};
最終的にこれを行う前に、この情報に対してさらにフィルタリングを行います。
return query.Select(x => new VacancySummary
{
Id = x.Id,
Departments = "",
Location = x.Location,
Company = x.Company,
DateOpened = x.DateOpened,
Notes = x.Notes,
Closed = x.Closed
}).Distinct().Skip(skip).Take(take);
上記の例外を取得します。各ユーザーが各検索のすべてのレコードを取得した場合、サーバーの帯域幅にパフォーマンス ヒットがあるため、最初に SQL ステートメント全体を実行し、結果を返してから Distinct を実行する必要はありません。データが返されます。
何か案は?