これは私の(簡略化された)コードです:
コントローラ
var userQuery = from u in _db.Users
where u.Username.ToLower().Contains(search.ToLower())
|| u.FirstName.ToLower().Contains(search.ToLower())
|| u.LastName.ToLower().Contains(search.ToLower())
select u.FirmID;
var query = from f in _db.Firms
where f.Name.ToLower().Contains(search.ToLower())
|| f.Keyword.ToLower().Contains(search.ToLower())
|| f.KeywordList.ToLower().Contains(search.ToLower())
|| userQuery.Contains(f.ID)
select f;
// order by firm name
query = query.OrderBy(f => f.Name);
ユーザーモデル
public class User
{
[Key]
public int ID { get; set; }
public string Username { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int FirmID { get; set; }
[ForeignKey("FirmID")]
public virtual Firm Firm { get; set; }
}
企業モデル
public class Firm
{
[Key]
public int ID { get; set; }
public string Keyword { get; set; }
public string KeywordList { get; set; }
public string Name { get; set; }
public virtual ICollection<User> Users { get; set; }
}
このコードを使用して、特定の検索文字列に一致するユーザーを持つ企業のリストを取得します。リストは会社名順に並んでいます。私が今やりたいことは、ユーザーの姓でもソートすることです。どうやってやるの?
今:
- 会社
- ユーザーb
- ユーザーa
- ユーザー c
- b社
- ユーザー z
- ユーザーd
希望:
- 会社
- ユーザーa
- ユーザーb
- ユーザー c
- b社
- ユーザーd
- ユーザー z