1

プロジェクトに問題があります。カテゴリを保存するためのテーブルがあり、listviewそのカテゴリ名を表示するための があり、 の上にテキスト ボックスがありますlistview。にアルファベットを入力するとtextbox、対応するカテゴリ名が LINQ クエリを使用してリスト ビューに表示されます。そのために、次のコードを使用しています。

 DataTable dt = (from c in Common.dc.TblBrands
                    where SqlMethods.Like(c.BrandName, txtSearch.Text+"%")
                    orderby c.BrandName
                    select c).getDataTable();

名前は正しく表示されますが、 にブランド ID を入力するとブランド名が表示されますtextbox。これを達成するためにどのクエリを使用できますか?

4

3 に答える 3

4

ContainsまたはStartsWithを使用できます。特定のケースSqlMethods.Like(c.BrandName, txtSearch.Text+"%")では、使用できます StartsWith

DataTable dt = (from c in Common.dc.TblBrands
                where c.BrandName.StartsWith(txtSearch.Text)
                orderby c.BrandName
                select c).getDataTable();
于 2012-11-02T06:29:33.040 に答える
1

SqlMethods.Likenamespace の下で available を使用することもできますSystem.Data.Linq.SqlClient

DataTable dt = (from c in Common.dc.TblBrands
                where SqlMethods.Like(c.BrandName, txtSearch.Text + "%")
                orderby c.BrandName
                select c).getDataTable();

追加: BrandId (intタイプを想定) で検索しようとしている場合は、次の方法で実行できます。

DataTable dt = (from c in Common.dc.TblBrands
                where SqlMethods.Like(c.BrandName, txtSearch.Text + "%") ||
                      c.BrandId.ToString().Equals(txtSearch.Text)
                orderby c.BrandName
                select c).getDataTable();
于 2012-11-02T06:42:52.713 に答える
1

次のようなものが必要なようです。

DataTable dt = (from c in Common.dc.TblBrands
                where SqlMethods.Like(c.BrandName, txtSearch.Text+"%")
                      || c.BrandId == txtSearch.Text
                orderby c.BrandName
                select c).getDataTable();

またはStartsWith代わりに使用SqlMethods.Like

DataTable dt = (from c in Common.dc.TblBrands
                where c.BrandName.StartsWith(txtSearch.Text)
                      || c.BrandId == txtSearch.Text
                orderby c.BrandName
                select c).getDataTable();

BrandIdもちろん、これはすべて文字列でもあると仮定しています。(たとえば)整数の場合、少し複雑になる可能性があります。どちらの場合もtxtSearch.Text、最初に個人的に抽出します。UI にアクセスできるコードにクエリを含めることさえできないと思いますが、それはアーキテクチャ上の問題です。

(ここに何があるかは明確ではありませんgetDataTable()。独自の拡張メソッドである場合は、.NET 規則に従って名前を修正することを検討してください。)

于 2012-11-02T06:54:23.520 に答える