เข้าร่วมให้กลับหลายๆสดมภ์และใช้กลุ่มโดยรายการส่วนเฟรมเวิร์ก

0

คำถาม

ฉันพยายามจะสร้างมันขึ้นรายการส่วนเฟรมเวิร์กกับการค้นหาให้กลับนี้สี่คอลัมน์:

Cidade = a.Nome, Estado = b.Uf, TemperaturaMinima = d.TemperaturaMinima, TemperaturaMaxima = d.TemperaturaMaxima

แต่ฉันไม่ต้องการ Cidade คอลัมน์ขอพูดมันซ้ำหรอกนะ ดังนั้นฉันไม่รู้วิธีที่จะใช้จัดกลุ่มตามแค่ใน Cidade คอลัมน์และกลับมาทั้งหมดนี้สี่คอลัมน์.

คุณช่วยฉัน?

`var cidadesMaisFrias = (from a in _contexto.Cidades
                                join b in _contexto.Estados
                                on a.EstadoId equals b.Id
                                join d in _contexto.PrevisaoClimas
                                on a.Id equals d.CidadeId
                                where d.DataPrevisao >= DateTime.Parse("23/11/2021") &&
                                d.DataPrevisao <= DateTime.Parse("29/11/2021")
                                orderby d.TemperaturaMinima ascending

                                select new
                                {
                                    Cidade = a.Nome,
                                    Estado = b.Uf,
                                    TemperaturaMinima = d.TemperaturaMinima,
                                    TemperaturaMaxima = d.TemperaturaMaxima
                                }).Take(3).ToList();`
entity-framework linq sql-server
2021-11-24 02:58:26
1

คำตอบที่ดีที่สุด

0

สวัสดี:)ฉันหวังว่าฉันเข้าใจของคุณสำคัญที่สุอย่างถูกต้อง-คุณต้องการค้นหาย 3 coldest เมืองคุณมีอยู่ใน DB ใช่มั้ย? นี่คือของฉัน ฉันก็แค่เปลี่ยนร่วมกับกลุ่มเพื่อเข้าร่วมกับดังนั้นนั่นคือหนึ่งรายการสำหรับแต่ละเมืองแทนที่จะเป็นรายการที่ซ้ำกัน. แล้วก็ผมก็ย้ายที่เรียงลำดับไอคอนไปตอนจบเลย

    var minDate = DateTime.Parse("23/11/2021");
    var maxDate = DateTime.Parse("29/11/2021");
    var toTake = 3;
        
    var cidadesMaisFrias = _contexto.Cidades.Where(c => true) // select all cities, no filter
            .GroupJoin(_contexto.Estados,
                c => c.EstadoId,
                e => e.Id,
                (c, e) => new { Citade = c, Estado = e } // here you get Citade with list of it's Estados (shoudl be one Estado)
                )
            .GroupJoin(_contexto.PrevisaoClimas,
                ce => ce.Citade.Id,
                pc => pc.CidadeId,
                (ce, pc) =>
                    new
                    {
                        Citade = ce.Citade.Nome,
                        Estados = ce.Estado.First().Uf,
                        TemperaturaMinima = pc.Where(x=>  x.DataPrevisao >= minDate && x.DataPrevisao <= maxDate).Min(x=>x.TemperaturaMinima), // first filter forecasts by date, then get smallest temperature
                        TemperaturaMaxima = pc.Where(x=>  x.DataPrevisao >= minDate && x.DataPrevisao <= maxDate).Max(x=>x.TemperaturaMaxima) // first filter forecasts by date, then get highest temperature
                    }
                )
            .OrderBy(x=>x.TemperaturaMinima) // sort by coldest
            .Take(toTake) // take 3 coldest 
            .ToList();
2021-11-25 14:27:06

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่