1

文字列をコントローラーに渡していますが、コントローラーが、渡された単語のいずれかをデータベースの Title フィールド内で検索する必要があります。

例えば。id="Outlook エラー メッセージ"

 [HttpPost]
    public JsonResult Lookup(string id)
    {
        List<string> listOfSearch = id.Split(' ').ToList();
        var results = db.KS.Where(x => x.Title.Intersect(listOfSearch).Any());

これにより、次の 2 つのエラーが発生します。

インスタンス引数: 'string' から ' に変換できませんSystem.Linq.IQueryable<string>

'string' には 'Intersect' の定義が含まれておらず、最適な拡張メソッド オーバーロード ' System.Linq.Queryable.Intersect<TSource>(System.Linq.IQueryable<TSource>, System.Collections.Generic.IEnumerable<TSource>)' に無効な引数があります

何が問題なのか、または渡された単語を含むタイトルのリストだけを結果に入力する方法を教えてください。

ありがとう、マーク

4

3 に答える 3

2
var results = db.KS.Where(x => listOfSearch.Any(item => x.Title.Contains(item)));

更新
LinqToSqlの場合:

var titles = db.KS.Select(item => item.Title)
    .AsEnumerable()
    .Where(title => listOfSearch.Any(word => title.Contains(word)));
于 2013-04-30T11:53:36.097 に答える
2

あなたが試すことができます

 List<string> listOfSearch = id.Split(' ').ToList();
 var result = from item in db.KS
              where listOfSearch.Any(v => item.Title.Contains(v)) 
              select item;

また

var result = db.KS.Where(item => listOfSearch.Any(v => item.Title.Contains(v)));
于 2013-04-30T13:20:42.083 に答える