2013-04-25 2 views
0

У меня есть этот SQL, но мне нужно преобразовать его в запрос Linq. С трудом пытаюсь использовать раздел/rownum и patition/count together.Необходимо преобразовать этот SQL в linq

Select TOP 1 vals.c3, (vals.Rank * vals.[Occurances]) as RNK 
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY c1 asc) as Rank, Count(*) Over(Partition By c3) As [Occurances], c3 
FROM dbo.ranks 
WHERE c2 in ('ADAMS', 'CHIP', 'SHOP') 
group by c3,c2,c1 
) vals 
--group by vals.c3 
ORDER BY RNK desc 

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

c1  c2  c3 
26774 CHIP  Chipshop 
26054 SHOP  Shops 
10054 SHOP  Chipshop 
23037 MEDICAL Doctors 
21434 CENTRE Doctors 
12803 DENTAL Dentists 
11847 OFFICE Post Offices 

c2 слово, с3 категории я ищу. c1 - как часто это слово происходит в каждой категории. Поэтому, когда я вхожу в поиск «Магазин Adams Chip», он пойдет и найдет наиболее вероятный матч категории на основе этого имени.

Любая помощь будет оценена :)

ответ

0

Попробуйте этот инструмент. Он делает именно то, что вы хотите.

Linqer