2017-08-18 47 views
0

我可以做這樣的事情:傳遞名稱從參數到LINQ查詢

public int CountSpesific(string queryString, string namaKategori, string namaLaporan) 
{ 
    var results = GetSearchResults(queryString); //will result in list 
    var count = results.Where(o => o.KlasifikasiLaporan == namaLaporan 
            && o.[namaKategori] == true).Count(); 

    return count; 
} 

我想[namaKategori]變化,按參數

+0

您將不得不使用反射和查找屬性信息。只要是Linq和Not EF,就不會有問題。 – Harsh

+0

如果它是由包含成員名稱的'string'提供的,那麼Harsh是正確的。其他選項是使用'Func <[TYPE_OF_o],bool>',如果它僅用於代碼並且事先知道成員 – kiziu

+0

這個lambda中的o是什麼?有些類型?你可以編輯它嗎?然後,只需添加一個方法來檢索指定屬性的值。 – Sinatr

回答

0

您可以使用反射來獲取屬性信息,然後獲取價值。在下面的代碼中YourType是lambda表達式中o的類型。

query = query.OrderBy(x => prop.GetValue(x, null)); 

public int CountSpesific(string queryString, string namaKategori, string namaLaporan) 
{ 
    System.Reflection.PropertyInfo prop = typeof(YourType).GetProperty(namaKategori); 

    var results = GetSearchResults(queryString); //will result in list 
    var count = results.Where(o => o.KlasifikasiLaporan == namaLaporan 
          && (bool)prop.GetValue(o) == true).Count(); 

    return count; 
} 
+0

我得到了這個錯誤'運算符==不能應用於類型對象和布爾的操作數' – Kemal

+0

您需要轉換該值,查看更新的答案。 – Harsh

+0

它的工作!感謝:D – Kemal