2015-02-18 3 views
-1

Мне нужен SQL-запрос, который должен быть оператором LINQ в моем коде C#.SQL-запрос в оператор linq

select 
    item, 
    MAX(aph.date) as MaxDate 
from 
    Table2.dbo.price aph 
where 
    item in (57269, 57270, 57278, 57279, 57280, 57281) 
group by 
    item 

Любые идеи?

Я пробовал использовать список, содержащий номера. Затем, если он содержит выбор нового элемента.

Я заставляю его работать, но единственная проблема заключается в том, что я получаю только первое значение из жесткого списка.

То, что я придумал:

var q = new List<decimal>() {57269, 57270, 57278, 57279, 57280, 57281}; 
     var msdB = new Entities(); 

     var query = from x in msdB.table1 
      where q.Contains(x.q) 
      select new Entitie 
      { 
       Name = x.q, 
       MaxDate = x.date 
      }; 

     var q = new List<Entitie> {query.MaxBy(x => x.MaxDate)}; 


     return q; 

Я хочу, чтобы все itemsnumbers в моем списке, чтобы показать. Теперь показывает только первый. (57269).

Это получить выход:

57269, 2015-02-18

Я хочу, чтобы все числа с датами.

+1

Можете ли вы предоставить образец данные и результаты? что ты уже испробовал? –

+0

Покажите, что вы пробовали - я уверен, что вы _very_ близко. –

+0

Вы просто забыли «группу by» - ее в своем sql, но не в вашей LINQ – Jamiec

ответ

2

Вашего SQL группы запросов по item, вашему запросу LINQ нужно сделать то же самое

var query = from x in msdB.table1 
     where q.Contains(x.q) 
     group x by x.q into g 
     select new Entitie 
     { 
      Name = g.Key, 
      MaxDate = g.Max(v => v.date) 
     }; 

How to: Group Query Results (C# Programming Guide)

+0

Спасибо, что сделал эту работу. Но я хотел бы отметить что-то, при использовании объекта с несколькими свойствами это не сработает. С объектом я имею в виду класс public class object (публичное имя строки и т. Д.). Вы должны использовать только одно свойство и получить свойства из объекта базы данных (переменная g в этом контексте). – user3410846

+0

@ user3410846 - вы можете «группировать по« нескольким полям », этот пример напоминает исходные только группы в одном конкретном поле. – Jamiec

+0

Хорошо, может быть, я был неясен. В этом контексте мне нужно было выбрать данные из базы данных в свойства объекта (позже я бы назвал это с помощью ajax через jQuery). Object = g.OrderByDescending (x => x.Date) .FirstOrDefault() Затем в jQuery я могу использовать данные [i] .WhateverTheObjectName - получить конкретное имя столбца от объекта. Без использования нескольких свойств в классе C#. – user3410846