выбор отличного числа от LINQ Stored Proc - PullRequest
1 голос
/ 28 октября 2010

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

testID (guid), testName, resultID (guid), outputName - поля

testGuid1, testName1, OutcomeGuid1, output1

testGuid1, testName1, OutcomeGuid2, исход 2

testGuid1, testName1, OutcomeGuid3, исход 3

testGuid1, testName1, OutcomeGuid4, результат4 ​​

testGuid1, конечный результат test5, test5

testGuid2, testName2, OutcomeGuid9, исход 9

testGuid2, testName2, OutcomeGuid1, исход1

testGuid2, testName2, OutcomeGuid3, результат3

и т. Д.так что в основном есть несколько тестов, каждый из которых имеет несколько результатов, некоторые из результатов будут общими для всех тестов

, что я хотел бы сделать, это получить максимальное количество результатов во всех тестах, яхотел бы сделать это с какой-то вещи типа лямбда-linq.так что для вышеупомянутых результатов я ищу число 5

, если я делаю:

var Results = dc.getTests(id); 
//need the whole resultsset for binding to something in a mo.
//then would like to do somethign along the lines of:
int count = Results.GroupBy(t=>t.testID).count(*).Max() //or something?

, если я отлаживаю, я получаю (удаляя часть счета вышеупомянутой строки) вещь IGrouping Linqкоторый имеет свойство public public count, но я не могу до него добраться.Я ожидаю, что есть лучший способ получить этот номер в любом случае.может кто-нибудь просветить меня, пожалуйста

большое спасибо

nat

1 Ответ

2 голосов
/ 28 октября 2010
var max = Results.GroupBy(t=>t.testID).Max(grp => grp.Count());

Тем не менее, обратите внимание, что лично Я бы искал способ сделать это в БД, а не извлекать все эти данные по сети только для того, чтобы получить один номер. Хорошим вариантом было бы вставить код в UDF и изменить SP так просто SELECT * FROM dbo.YourUdf(args) - причина в том, что UDF компонуемы , так что вы можете отобразить UDF в контекст данных и иметь :

var max = db.MyUdf(args).GroupBy(t=>t.testID).Max(grp => grp.Count());

(т. Е. Тот же код), и он будет выполнять работу на сервере , просто возвращая один номер по сети.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...