我正在尝试查找帐户名称的前缀,以便可以在 UI 的过滤器中使用它们。
但是,每当我执行以下 linq 语句时,它总是带回整个帐户名,然后执行子字符串。而不是编写等效的sql。
return this.Accounts(user).Select(x => x.Name.Substring(0, 1)).ToList().Distinct();
this.Accounts 是 IQueryable,因此它不应强制回调数据库。
是否有任何理由将它们全部返回,然后对结果名称进行子串化,或者是否有可行的替代方案?
编辑
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;
}