Просмотр Lambdas в отладчике Visual Studio - PullRequest
2 голосов
/ 17 марта 2010

У меня есть простая инструкция LinqToSQL, которая не работает. Примерно так:

List<MyClass> myList = _ctx.DBList
     .Where(x => x.AGuidID == paramID) 
     .Where(x => x.BBoolVal == false) 
     .ToList();

Я смотрю на _ctx.DBList в отладчике, и второй элемент соответствует обоим параметрам.

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

Ответы [ 2 ]

1 голос
/ 17 марта 2010

У вас есть 2 варианта.

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

var p1 = _ctx.DBList.Where(x => x.AGuidID == paramID).ToList();
var p2=p1.Where(x => x.BBoolVal == false).ToList();
// and you just examine each of them in the debugger
// I put ToList() here so you get the actual result

Или вы можете написать свои лямбда-выражения в разных строках и поставить точку останова на них, а затем перебрать свой код с шагом. Вы получите намного больше информации, но, скорее всего, не получите ничего более полезного, чем 2 массива выше (плюс может потребоваться очень много времени, чтобы добраться до фактической ошибки, если таковая имеется).

1 голос
/ 17 марта 2010

Я бы разбил его на два этапа - построение запроса, затем присвоение списку. Таким образом, вы можете посмотреть на сгенерированный SQL в отладчике и посмотреть, верен ли он. Иногда я вырезал / вставлял (и исправлял) в SSMS, когда у меня возникла проблема с запросом для отладки.

var q = _ctx.DBList 
     .Where(x => x.AGuidID == paramID)  
     .Where(x => x.BBoolVal == false) 
// view q in the debugger to see the SQL it will generate
var myList = q.ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...