5

JQgridのWebサービスを使用して、カスタム列名を持つリスト内のカスタム要素の検索を実装しようとしていますが、アイデアがありません。これについて何か助けていただければ幸いです。

ここにコードをコピーすることはできませんが、たとえば、次のようなエンティティがあります。

public class Test
{
    public int ID {get; set;}
    public string Name {get; set;}
    public string Nationality {get; set;}
}

そして、このクラスのリストを返す関数を作成しました:

public static List <Test> getList()
{
    List<Test> testList = new List<Test>();
    Test testList1 = new Test();

    testList1.ID = 123;
    testList1.Name = "asd";
    testList1.Nationality = "qwe";

    testList.Add(testList1);
    return testList;
}

クエリ文字列から searchField と searchString を取得し、これらの値を文字列 searchField と searchString に格納しました。

この関数と同様に機能するものが必要です(間違っていることはわかっていますが、その機能が必要です):

list=testList.Where(x=>x.searchField.Contains(searchString));

リストなどを取得するのに問題はありませんが、これに似たものが欲しいだけです。

4

2 に答える 2

3

次のように実装できます。

if(searchField == "ID")
{
   testList = testList.Where(x => x.ID == searchString);
}
else if (searchField == "Name")
{
   testList = testList.Where(x => x.Name.Contains(searchString);
}
else if (searchField == "Nationality")
{
   testList = testList.Where(x => x.Nationality.Contains(searchString);
}
于 2012-10-10T07:56:52.633 に答える
3

あなたが使用することができますReflection

list = testList.Where(x => (x.GetType()
              .GetProperty(searchField)
              .GetValue(x) as string).Contains(searchString)    
     );
于 2012-10-10T07:50:28.120 に答える