1

ASP.Net と LINQ は初めてです。私が取り組んでいる小さなプロジェクトがあります。基本的には、4 つのテキスト ボックスを含む画面、リストビュー コントロール、および 1 つのデータベース テーブルを含む検索ボタンで構成されます。

各テキスト ボックスは、特定のフィールド (作成者、タイトル、発行者、および価格) を表します。私が想定しているのは、ユーザーが 1 つまたは複数のフィールドにテキストを入力し、検索ボタンを押すことです。次に、プログラムは、ユーザーの条件に一致する結果が見つかった場合は何でも返します。

SQL ステートメントを使用している場合、入力フィールドのいずれかに一致するすべてのレコードを選択するだけです (つまり、SELECT 著者、タイトル、出版社、価格 FROM 本 WHERE...)。ただし、LINQ でこれを行う方法がよくわかりません。

それで、誰かが私の出発点を持っていますか?検索のリミッターとして 1 つのフィールドを持つ LINQ の例を見てきました。

public void SimpleSearch()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();

    var q =
        from a in dc.GetTable<Books>()
        where a.Title == "1984"
        select a;

    dataGridView1.DataSource = q;
}

しかし、検索で複数のリミッターを使用する他の例を見つけることができないようです。ありえないと思い始めています。もしそうなら、誰かが私がやろうとしていることを達成するための別の方法を勧めることができますか? 基本的に、ユーザーの入力に一致するフィールドをテーブルで検索し、結果をリストビューで返したいだけです。どんな助けでも大歓迎です。

4

2 に答える 2

2

||OR 区切り文字として使用できるはずです。

public void SimpleSearch()
{
    DataClasses1DataContext dc = new DataClasses1DataContext();

    var q =
        from a in dc.GetTable<Books>()
        where a.Title == "1984" || a.Author == "Stephen King" || a.Price == 5.99m
        select a;

    dataGridView1.DataSource = q;
}

&&の代わりに AND 検索を行うために使用することもできます。||

于 2013-04-08T15:47:04.387 に答える
1

検索をもう少しあいまいにするために含むを使用するのが好きです。また、検索を実行するときに大文字と小文字の区別の問題がないように、すべてを小文字に設定するのが好きです。

public void SimpleSearch()
{
  DataClasses1DataContext dc = new DataClasses1DataContext();

  var search = txtSearch.Text.ToLower();

var q =
    from a in dc.GetTable<Books>()
    where a.Title.ToLower() == search ||
    a.Author.ToLower() == search ||
    a.Author.ToLower().Contains(search) ||
    a.Title.ToLower().Contains(search)
    select a;

dataGridView1.DataSource = q;
}
于 2013-04-08T15:56:00.787 に答える