Получение уникальных данных от ISingleResult - PullRequest
1 голос
/ 25 мая 2011

У меня есть хранимая процедура, которая возвращает данные в этом формате:

HotelID | Price
---------------------
1 | 20
1 | 30
2 | 25
4 | 40
4 | 50

Я получаю результаты примерно так:

ISingleResult<spResult> results = DataContext.sp();

Я хочу получитьСписок отелей, основанный на данных, возвращенных из хранимой процедуры.Что-то вроде:

int[] uniqueHotelIds = GetUniqueHotelIdsFromResults(results);

List<Hotel> hotels = (from h in DataContext.Hotels
                      where uniqueHotelIds.Contains(h.HotelID)
                      select h).ToList();

Ответы [ 3 ]

1 голос
/ 31 августа 2011

Вы также можете выполнить итерацию по SingleResult следующим образом:

var myFancyResult;

ISingleResult<spResult> results = DataContext.sp();

foreach (var spResult in results)
{
    myFancyResult = spResultin.NameOfColumn;
    //Do something else with the data.
}

Затем вы можете назвать результат в хранимой процедуре следующим образом, чтобы получить ясную картину:

SELECT ISNULL(@Result, 0) AS Result

ISNULL также гарантирует, что вам не придется иметь дело с Nullables в C #.

1 голос
/ 25 мая 2011

У меня нет большого опыта работы с ISingleResult, но не могли бы вы:

int[] uniqueHotelIds = results.Select(x => x.HotelID).Distinct();
0 голосов
/ 26 декабря 2014

Если кому-то все еще нужен ответ:

ПРИМЕЧАНИЕ. ISingleResult, как следует из названия, вернет один результат. В приведенном ниже блоке кода он сопоставляет результирующий вызов SP с классом «resultObject». Во второй строке приведен пример того же кода с параметрами. Затем вы захотите проверить и убедиться, что он не равен нулю (в зависимости от вашего SP).

ISingleResult<spResult> results = DataContext.sp();
var newObject = results.Select(r => new resultObject()).SingleOrDefault();
// or
var newObject = DataContext.sp().Select(r => new resultObject()).SingleOrDefault();
// with parameters
var newObject = DataContext.sp(id, count).Select(r => new resultObject(id, count)).SingleOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...