SERİ: Max veya Varsayılan?
Hiçbir satır döndürebilir SERİ bir sorgudan Max değerini almak için en iyi yolu nedir? Ben sadece eğer
Dim x = (From y In context.MyTable _
Where y.MyField = value _
Select y.MyCounter).Max
Sorgu hiçbir satır döndürür bir hata alıyorum. Yapabilirim
Dim x = (From y In context.MyTable _
Where y.MyField = value _
Select y.MyCounter _
Order By MyCounter Descending).FirstOrDefault
ama böyle basit bir istek için biraz kalın kafalı hissediyorum. Daha iyi bir yol yapmak için mi kaçırdım?
GÜNCELLEME: Buraya bir hikaye: uygunluk sayaç çocuk tablo (eski sistem, beni anlamıyor başladı...). bir sonraki almak için çalışıyorum Her hasta için ilk uygunluk satır her zaman ikinci 2, vb. 1. (belli ki bu çocuk tablonun birincil anahtar değil). Yani, bir hasta için max mevcut sayaç değeri seçerek ve sonra 1 satır oluşturmak için ekliyorum. Mevcut alt değerleri yok, sorgu 0 (ekleme 1 bana 1 sayaç değeri verecektir) geri dönmek istiyorum. Eski app sayaç değerlerini boşlukları (Olası) tanıtır diye alt satır ham sayısı güvenmek istemiyorum unutmayın. Soru çok genel yapmak benim için kötü.
CEVAP
Defaultıfempty ETMENİZ SQL için uygulanan olmadığına göre, iade ve toplam işlevlerinde boş küme ile ilgilenir fascinating article Bir hata hakkında bir araştırma yaptım. Ne buldum özetlemek gerekirse, seçmek içinde bir null döküm bu kısıtlamaya alabilirsiniz. Benim VB biraz paslı, ama bendüşünüyorumböyle bir şey çıkacağını:
Dim x = (From y In context.MyTable _
Where y.MyField = value _
Select CType(y.MyCounter, Integer?)).Max
Ya da C#
var x = (from y in context.MyTable
where y.MyField == value
select (int?)y.MyCounter).Max();
Nasıl XElement veya SERİ ile XPath kul...
Java Güvenlik: Geçersiz anahtar boyutu...
Python fonksiyon turşu için kolay bir ...
Neden Çınlama ve VS2013 ayracı-başlatı...
Char imzalı veya imzasız varsayılan ol...