c# sql problem z pytaniem zagnieżdżonym

0

Mam napisane zapytanie w sql, które działa prawidłowo:

select top 3 a.jednostki, COUNT(0) as razem from
(select *, (jednostka1+' '+Jednostka2) as jednostki
from Tabbazas) as a
group by a.jednostki
order by razem desc

ale nie potrafię zaimplementować go do c#, coś napisałem ale nic z tego nie wychodzi

private void sort_Click(object sender, RoutedEventArgs e)
        {
            using (Connect context = new Connect())
            {

                var query =

                    from tabbaza in context.Tabbazas
                    select a.jednostki, COUNT(0) as razem from
                    (select (tabbaza.jednostka1+' '+tabbaza.jednostka2) as jednostki from tabbaza) as a
                    group by a.jednostki
                    order by razem desc
                gridtab.ItemsSource = query.ToList();
      }
    }
0

Dlatego właśnie polecam użyć Dappera. Moim zdaniem Linq to fajne narzędzie, ale jednak jego składnia "od tyłu" jest myląca i nieczytelna. I u ciebie właśnie ten problem występuje.

(select (tabbaza.jednostka1+' '+tabbaza.jednostka2) as jednostki from tabbaza)

Czy nie powinno być odwrotnie?

(from tabbaza in context.Tabbazas select (tabbaza.jednostka1+' '+tabbaza.jednostka2) as jednostki )
0

poprawiłem ale koda nadal nie działa

private void sort_Click(object sender, RoutedEventArgs e)
        {
            using (Connect context = new Connect())
            {
                    var query =
                    from tabbaza in context.Tabbazas
                    select a.jednostki, COUNT(0) as razem from
                    (from tabbaza in context.Tabbazas select (tabbaza.jednostka1+' '+tabbaza.jednostka2) as jednostki) as a
                    group by a.jednostki
                    order by razem desc
                    gridtab.ItemsSource = query.ToList();
            }
        }
1

Jaka jest treść błędu?

1

screenshot-20220528165628.png

0

a podpowiesz jak w Dapper zapytanie przypisać do listy bo tez już nim próbowałem ale nie mogłem rozwiązać tego problemu

1

Model

class DataModel 
{
  public string Unit {get;set;}
  public int Count {get;set;}
}

Pobieranie danych

using(IDbConnection db = new SqlConnection(CONNECTION_STRING))
{
  List<DataModel> data = db.Query<DataModel>("select top 3 a.jednostki [Unit], COUNT(0) [Count] as razem from (select *, (jednostka1+' '+Jednostka2) as jednostki from Tabbazas) as a group by a.jednostki order by razem desc").ToList();
}
0

być może to ma sens tylko mam jeszcze jeden błąd
screenshot-20220528172952.png

0

działa, dzięki wielki

1 użytkowników online, w tym zalogowanych: 0, gości: 1