UIのフィルターで使用できるように、アカウント名のプレフィックスを見つけようとしています。
ただし、次のlinqステートメントを実行すると、常にアカウント名全体が返され、サブ文字列が実行されます。同等のSQLを書く代わりに。
return this.Accounts(user).Select(x => x.Name.Substring(0, 1)).ToList().Distinct();
this.AccountsはIQuery可能であるため、データベースへのコールバックを強制しないでください。
それらすべてを返し、結果の名前をサブストリング化する理由はありますか、それとも有効な代替手段がありますか?
編集
private IQueryable<Account> Accounts(User user)
{
var accounts = this.SessionManager.GetActiveSession().Query<Account>().Where(x => x.Company.Id == user.Company.Id);
if (!user.IsAdmin && user.AccountProfiles.Any())
{
accounts = accounts.Where(x => x.AssociatedProfiles.Any(y => y.Users.Any(z => z.Id == user.Id)));
}
return accounts;
}