2015-03-16 4 views
0

мне нужно сделать выбор из таблицы SQL Server и сцепить результаты в строку SQL, так что я в конечном итоге с var sqlString = "Select blah from myTable where blah blah order by blah":Создание исходной строки SQL из результатов запроса Linq?

enter image description here

Вот мой LINQ. Я пытаюсь выбрать из столбцов в порядке, мне нужно их & concatanate их в 1 строку:

var query = (from a in _Context.tbArticleTypeAssets 
         where a.ArticleType == ArticleType 
         select new {sqlQuery = a.ColSelection + "" + a.FromTable + "" + a.whereclause + "" + a.orderBY}); 

     string queryResult = query.ToString(); 

В результате выход Linq, который я не хочу. Мне просто нужны значения строк. Есть ли способ достичь этого?

ответ

2

LINQ запрос будет возвращать коллекцию, вы должны использовать First() или FirstOrDefault() получить деталь:

string queryResult = query.FirstOrDefault().sqlQuery; 

лучше, чтобы проверить на нуль, а также:

string queryResult = query.FirstOrDefault() != null ? query.FirstOrDefault().sqlQuery : string.Empty; 
+0

Отлично, спасибо. Почему я получаю «sqlQuery = SELECT blah blah» в моем результате? В «Выбрать новое» мне нужно указать имя, но я не хочу, чтобы имя появлялось в результирующей строке? – Hardgraf

+1

@ Hardgraf, как я писал, не должен давать вам это, и вы можете пропустить 'new', который на самом деле создает анонимный объект –

+1

Я имею в виду:' 'select a.ColSelection +" "+ a.FromTable' ' –

0

Попробуйте это:

var query = _Context.tbArticleTypeAssets 
     .Where(a=>a.ArticleType == ArticleType) 
     .Select(a=>a.ColSelection + "" + a.FromTable + "" + a.whereclause + "" + a.orderBY) 
     .ToList(); 

или если ваш запрос всегда будет возвращать только один рекордер d, то вы можете сделать это:

var query = _Context.tbArticleTypeAssets 
     .Where(a=>a.ArticleType == ArticleType) 
     .Select(a=>a.ColSelection + "" + a.FromTable + "" + a.whereclause + "" + a.orderBY) 
     .First(); 
Смежные вопросы