0
我從前端傳遞一個對象(具有屬性:'Key'和'Value')到我的後端服務,如果給定值必須查找(obj.value )包含在特定SQL Server數據庫表的特定列(obj.key)中,並返回轉換爲對象的所有匹配行的列表。LINQ查詢如果表列包含值和返回對象列表
但是,給定的代碼不適用於所有的情況,因爲大多數情況下它返回一個「對象沒有設置爲對象的實例」錯誤。
agencies = _unitOfWork.RatingAgencyRepository.GetByType(p => p.GetType().GetProperty(filter.key)
.GetValue(p, null).ToString().ToLower().Contains(filter.value.ToLower().Trim())).ToList();
我一直在嘗試解決由同事寫的一整天沒有任何結果的代碼,因爲我不是真正熟悉LINQ和EF。
在此先感謝。
如果不知道更多關於您的RatingAgencyRepository.GetByType方法,很難說。無論哪種方式,這是一個非常醜陋的聲明。如果您有權修改您的存儲庫類,我建議創建一個方法,只需將過濾器對象作爲參數,然後使用它獲取具有該過濾器屬性和過濾器值的對象列表,然後將其轉換或轉換爲你想要的對象類型。 底線是你想要你的代碼是可讀和可維護的。這條線對我來說不是非常清楚或直觀。 – Torrents
這是GetByType方法後面的代碼: '公共的IEnumerable GetByType(Func鍵其中) { 返回DbSet.Where(其中).ToList (); }' –
spectre85
這不能相同,因爲您在示例代碼中傳遞了兩個參數,並且該定義只需要一個參數。 – NetMage