私はEntity FrameworkとLINQを使用するWindowsフォームアプリケーションを持っています.BindingNavigatorを使用してデータをナビゲートする多くのフォームがあり、ナビゲーターにテキストボックスを追加して特定のアイテムを検索し、それにナビゲートしたい.からですが、他のフォームに対して同じ手順を実行し、すべてのフォームに同じイベントとコードを追加する必要があるため、カスタム ToolStripTextBox を作成し、代わりにすべてのフォームで使用することにしましたが、汎用にする必要があります異なるオブジェクトまたはエンティティを使用するすべてのフォームと、これが私が思いついたものだからです:
class ToolStripSearchBox<T> : ToolStripTextBox
{
BindingSource dataSource;
int currentIndex;
public ToolStripSearchBox()
: base()
{
KeyUp += new KeyEventHandler(ToolStripSearchBox_KeyUp);
}
void ToolStripSearchBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F4)
{
string patern = Text;
List<T> TList = dataSource.List.Cast<T>().ToList();
int res = 0;
T foundT = default(T);
if (int.TryParse(patern, out res))
{
foundT = TList.Where(j => j. == res).First();
}
else
{
foundT = TList.First(j => (j.FirstName + " " + j.LastName).Contains(patern));
}
if (foundT == null)
{
return;
}
dataSource.Position = dataSource.IndexOf(foundT);
}
}
}
しかし、問題は、すべてのエンティティにフィルター処理する異なるプロパティがあることです。文字列パラメーターを使用してオブジェクトのプロパティ名を渡すことを考えていましたが、LINQ で使用する方法が見つかりませんでした。
口述ミスがある場合は申し訳ありませんが、英語は私の母国語ではありません よろしくお願いします