タイプFoo
のオブジェクトのリストと、タイプFoo
のオブジェクトの別のインスタンスがあります。 linqを使用して、インスタンスのnull以外のプロパティに基づいてリストをフィルタリングしたいと思います。Linq:タイプAのオブジェクトに基づいたタイプAのフィルタリスト?
class Foo {
public int ID;
public string Description;
public long Location;
}
Foo fooFilter = new Foo() {
ID = null,
Description = null,
Location = 1
}
List<Foo> fooList = new List<Foo>();
fooList.Add(new Foo(){ID = 1, Description = "one", Location = 1});
fooList.Add(new Foo(){ID = 2, Description = "two", Location = 0});
fooList.Add(new Foo(){ID = 3, Description = "three", Location = 1});
List<Foo> filteredFooList = fooList.Where(???);
私は何とか
fooList
を照会して
filteredFooList
を埋めるために
fooFilter
を使用したい
:
[
{ID = 1, Description = "one", Location = 1},
{ID = 3, Description = "three", Location = 1}
]
EDIT:
私が質問をより明確にするために簡単なことしようとしていたが、私は重要な情報が残っているかもしれません。私の実際のプログラムでは、List<Foo>
はデータベースからの大きな結果です(40k以上のエントリ)。私は、エンティティフレームワークオブジェクトのフィールド名に一致するパラメータの任意の組み合わせを取ることができるコントローラメソッド(MVC)を作成しようとしています。したがって<Foo>
はEFレコードタイプです。
public class Home : Controller
{
public ActionResult FilteredFooList(int ID, string Description, long Location, etc, etc, etc)
{
}
}
そして、より多くのような何かを:
たぶんpublic class Home : Controller
{
public ActionResult FilteredFooList(Foo filterObj)
{
}
}
このだから私は、明示的に、コントローラでのフィルタリングすることができ、すべての(15程度)のフィールドをリストアップすることを避けるためにしようとしています可能ではないか良いアイデアですか?
fooFilterはフィルタではなく、Fooオブジェクトです。フィルタ述語とは、真か偽かを評価する式です。 – elgonzo
'.ID'と' .Location'は値型なので 'null'にすることはできません。値の型をどのように扱う予定ですか? – NetMage
真の 'fooFilter'は、' System.DirectoryServices.AccountManagement.PrincipalSearcher'がどのように動作するかのように、例文でクエリを実行するための、examplarです。 – NetMage