SQLサーバーunion
では、結果は主キー列に基づいてソートされます。私はエンティティのフレームワークでこの動作を防止したい。
this postに、@praveenはpure SQLでこれを行う方法を説明しました。しかし、私はエンティティフレームワークでこれをやりたい
私のコード:エンティティ・フレームワークでの結合のソート結果の防止
public virtual ActionResult Search(string keyword)
{
var products = _db.Products
.Where(x => x.IsActive)
.AsQueryable();
var productExactlyTitle = products.Where(x => x.Title == keyword);
var productStartTitle = products.Where(x => x.Title.StartsWith(keyword));
var productContainsTitle = products.Where(x => x.Title.Contains(keyword)
|| x.Title.Contains(keyword)
|| x.SubTitle.Contains(keyword)
|| x.OtherName.Contains(keyword));
var productList = productExactlyTitle.Union(productStartTitle)
.Union(productContainsTitle)
.Take(10)
.AsEnumerable()
.Select(x => new ProductItemViewModel()
{
Id = x.Id,
Title = x.Title,
Price = x.Price.ToPrice(),
Image = x.Images.FirstOrDefault(y => y.IsCoverPhoto)?.ImageUrl
});
// some code ...
}
私がオーダー以下のレコードを表示する:
まず:の記録productStartTitle
サード:の記録productExactlyTitle
第二の記録productContainsTitle
結果はId
列でソートされています!私はこれを望んでいない。
これを行う方法はありますか?
あなたは私たちにあなたがしようとしたコードを表示する必要があり、さもなければ、我々は助けることはできません。 https://stackoverflow.com/help/how-to-ask –