Linqにおける複数のWHERE句
2023-10-15 07:29:16
質問
私はLINQの初心者で、複数のwhere句を実行する方法を知りたいのです。これは私が達成したいことです:特定のユーザー名をフィルタリングすることによってレコードを返します。私は以下のコードを試してみましたが、期待どおりに動作しません。
DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
where ((r.Field<string>("UserName") != "XXXX") || (r.Field<string>("UserName") != "XXXX"))
select r;
DataTable newDT = query.CopyToDataTable();
事前に助けをありがとうございました!!!
どのように解決するのですか?
複数の"where"節を直接記述すればよいのですが、そうしたいとは思えませんね。複数の "where"節があると、最終的に より 制限の強いフィルタになってしまいます。 より少ない 制限をかけることができます。私はあなたが本当に欲しいと思っています。
DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
where r.Field<string>("UserName") != "XXXX" &&
r.Field<string>("UserName") != "YYYY"
select r;
DataTable newDT = query.CopyToDataTable();
||の代わりに&&があることに注意してください。ユーザ名がXXXXでない場合に行を選択したい場合。 と で、ユーザー名がYYYYでない場合、その行を選択したいのです。
EDIT: もし、コレクション全体を持っているなら、もっと簡単です。そのコレクションが
ignoredUserNames
:
DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
where !ignoredUserNames.Contains(r.Field<string>("UserName"))
select r;
DataTable newDT = query.CopyToDataTable();
理想的には、これを
HashSet<string>
を避けるために
Contains
の呼び出しに長い時間がかかるのを避けるためですが、コレクションが十分に小さければ、それほど大きな影響はないでしょう。
関連
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] LINQで複数の "order by "を使用する
-
[解決済み] LINQのGroup by
-
[解決済み] DataTableに対するLINQクエリ
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] IEnumerable<T>のforeachのLINQでの等価性
-
[解決済み] エンティティフレームワークのLinqクエリInclude()複数の子エンティティ
-
[解決済み] LINQ OrderByとThenByの比較
-
[解決済み] NHibernateとLINQ to SQLの比較
-
NHibernate LinqプロバイダにおけるFetchとFetchManyの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Lambda式でOrderBy descending?
-
[解決済み】LINQ グループバイをディクショナリーオブジェクトに入れる
-
[解決済み] エンティティフレームワークのLinqクエリInclude()複数の子エンティティ
-
[解決済み] LINQのOn句で複数条件を指定してのJoin
-
[解決済み] LINQでコレクションをページングする
-
[解決済み] LINQ to Entities は、メソッド 'System.String Format(System.String, System.Object, System.Object)' を認識しません。
-
[解決済み] LINQにおける標準偏差
-
[解決済み] LINQラムダ式でのGroupBy、Count、Sumの使用法
-
Entity Framework - "Unable to create constant value of type 'Closure type'..." エラー。
-
NHibernate LinqプロバイダにおけるFetchとFetchManyの比較