0

ビューのフォームに3つのフィールドがあります。

[Textfield] : Name  
[Dropdown]  : Sector  
[Dropdown]  : Country  

私の要件は、コントローラーメソッドでこれらの3つのキーワードを使用して結果をフィルター処理し、最初に受信日、次に名前で結果を並べ替えることです。

非常に多くの可能性があります。たとえば、Name一致とSector一致がフィルタリングを行う場合などです。

if else他の面倒な方法でそれを行うことはできますが、LINQで1つのステートメントでこれを行うにはどうすればよいですか。リストを返す必要があります。

4

3 に答える 3

1

一部の列に指定された文字列が含まれていることを確認するために単純な検索が必要な場合は、次のようにしてみてください。

// dc is some datacontext
var query = dc.MyEntities.Where(x=> x.Name.Contains(inputName) ||
                                    x.Sector.Contains(inputSector) ||
                                    x.Contry.Contains(inputCountry))
                         .OrderBy(x=> x.receivedDate)
                         .ThenBy(x=> x.Name);
var resultList = query.ToList();

また、必要に応じて、データベースの照合をチェック(設定)して、大文字と小文字を区別する(CS)または大文字と小文字を区別しない(CI)検索を実行します。ただし、CS照合で大文字と小文字を区別しない検索を行うには、上記のコードを。で拡張する必要がありますToUpper()

x.Name.ToUpper().Contains.(inputName.ToUpper());

しかし、注意してください、それはトルコのテストに合格しません:-)-彼らのiを大文字にし、Iを小文字することには奇妙なことがあります。

大文字と小文字を区別しない興味深いリソースもあります.Contains(string)大文字と小文字を区別しない'Contains(string)'

洗練された全文検索が必要な場合。私は探します:

于 2013-01-15T08:31:30.343 に答える
0

このソリューションを見て、目的の目標を達成するのに役立つかどうかを確認してください:linqを使用してキーワードを検索する

于 2013-01-15T06:17:47.270 に答える
-1

私の質問に答えてくれたみんなに感謝します。私が探していた答えを以下で見つけて、それが他の人に役立つことを願っています。

http://blog.tech-cats.com/2008/01/using-optional-parameters-in-sql-server.html

于 2013-01-29T23:34:41.407 に答える