2016-10-26 5 views
1

Я имею следующую структуру объекта в C# объектРасширенный запрос в Dapper

new [] { 
    new SomeType { 
     Id = XXX, 
     SomeSubType = new []{z,y,x,w} 
    }, 
    . 
    . 
    . 
} 

Я пытаюсь создать что-то вроде следующего SQL-запроса для Dapper.

SELECT * 
FROM some_table, some_other_table 
WHERE (X = XXX/*@Id*/ AND Y IN (z, y, x, w) /*@SomeSubType*/) 
     OR (X = AND Y IN (....)) 
     OR (....) 
     OR (....) 
     .....) 

Я мог бы динамически создать запрос, в соответствии с объектом, и создать много параметров для каждого варианта - но это боль.

Может ли кто-нибудь подумать о более удобном способе сделать это? возможно, лучший запрос, обеспечивающий выполнение обоих условий?

+1

Может быть, вы должны прочитать плоские данные списка (от вашего соединения) и группировать их в C# – Shyju

+0

, что на самом деле не плохая идея, я думаю, что это то, что я буду делать , – gilmishal

+0

Я бы сказал, что динамическое создание запроса - лучшая ставка, но в зависимости от типов X и Y вы можете объединить их как 'X + '' + Y IN @ Combined', а затем' @ Combined' будет 'stuff. SelectMany (i => i.SomSubType.Select (j => iX + "" + jY)) 'Но это может привести к неэффективному запросу. – juharr

ответ

Смежные вопросы