私のコントローラには、複数の単語を含む検索の最初の結果を取得する次のコードがあります。この質問への回答と同様に:ASP:NET MVC multiple words in searchすべての結果を.FirstOrDefaultではなくIQueryableで取得します
var items = from s in db.Items select s;
if (!string.IsNullOrEmpty(searchString) && !searchString.Any(x => Char.IsWhiteSpace(x)))
{
searchString.Trim();
items = items.Where(s => s.keywords.Contains(searchString) || s.notes.Contains(searchString)
}
else if (!string.IsNullOrEmpty(searchString) && searchString.Any(x => Char.IsWhiteSpace(x)))
{
searchString.Trim();
string[] strings = searchString.Split(' ');
var finalItems = new List<Items>();
foreach (var splitString in strings)
{
finalItems.Add(items.FirstOrDefault(s => s.notes.Contains(splitString)
|| s.keywords.Contains(splitString));
}
items = finalItems.ToList().AsQueryable();
return View(items.ToPagedList(pageNumber, pageSize));
}
私の代わりに最初の試合のすべてのマッチング結果を取得したいです。私は.FirstOrDefaultラインを変更しようとすると、今すぐ:
finalItems.Add(items.Where(s => s.notes.Contains(splitString)
|| s.keywords.Contains(splitString)
私ははMyProject.Models.Items「から 『System.Linq.IQueryable(MyProject.Models.Items』)から変換することはできません」を取得します。
私は私の項目の割り当てを変更しようとしました:
問題を解決するようだが、それは誤り 「はすべての私のs.keywords.Containsまたはs.notes.Containsを壊すvar items = from s in db.Items
select s as IQueryable(Items);
のIQueryable (Items)にはキーワードまたは注釈の定義が含まれておらず、拡張メソッドのキーワードまたはIQueryable(Items)型の最初の引数を受け入れる注釈は ''となります。
を。 'Where()'でコード化されたような1つ以上のアイテムを取得したいときは、Collectionを返す。今度は、すべてのメソッドを変更しなければならず、アイテムのコレクションを扱うことができます。 – Yggraz