Поиск любого свойства анонимного типа для данной строки в C # - PullRequest
0 голосов
/ 31 января 2019

Конечный результат

Мне нужно иметь возможность искать в любой таблице базы данных все строки, которые содержат данную строку поиска где-либо в любом из столбцов.

Текущая реализация

Я использую анонимные типы для обработки случая, когда используется анонимный select лямбда-оператор.В настоящее время, используя рефлексию, я могу перебрать PropertyInfo[] данного анонимного типа, получить значения по одному и сравнить их с моей строкой поиска.

var type = ob.GetType();
foreach (PropertyInfo prop in type.GetProperties())
{

    var val = prop.GetValue(ob, null);
    if (val.ToString().Contains(search)) return true;
}

Проблема

Эта реализация отлично работает для анонимных списков.Однако при использовании IQueryables, который сопоставляется с SQL через EntityFramework, это не так, потому что лямбда-выражения не могут создавать запросы SQL, использующие в запросе c #.Единственный путь, который мне удалось найти, - это создание сложного дерева выражений для имитации цикла foreach, необходимого для циклического прохождения и проверки всех элементов PropertyInfo, связанных с анонимным объектом.

Есть ли другой способ сделать это, или мне придется копаться в некоторых статьях дерева выражений?

...