Etkileyici sözdizimi ve diğer kullanışlı özellikler için LINQ deyimlerini seviyorum. Ancak, bazen bunları ayıklamak çok zahmetli buluyorum. Özellikle, bir koleksiyon üzerinde bir LINQ ifadesi çalıştırdığımda ve koleksiyondaki öğelerden biri bir istisna oluşturduğunda, sorunun nedeninin ne olduğunu ve sorunun nereden geldiğini nasıl anlayabilirim? Bunun için,LINQ öğesi başına hata ayıklama
var file_contents = File.ReadAllLines("myfile.txt");
var data = file_contents.Select(s => double.Parse(s));
Şimdi:
0.46578
12.314213
1.444876
...
Ben List<string>
olarak bu okuma ve daha özel bir veri yapısı içine yüklenmeden ediyorum:
Ben 1000 gerçek sayılar içeren bir metin dosyası var düşünün belirli girdi, dikkatlice bakma zahmetine girmedim ve 876. satırın ortaya çıktığı ortaya çıkıyor (gösterilen satır numaraları):
875 5.56786450
876 Error: Could not calculate value.
878 0.0316213
Sebep ne olursa olsun (belki de dosya hatalı çalışan bir komut dosyası tarafından oluşturulmuştur). LINQ yöntem zincirim elbette bir istisna atar. Sorun şu ki, listenin hangi unsurunun istisnaya neden olduğunu ve değerinin ne olduğunu nasıl anlarım? bunun yerine kullanılırsa
, netleştirmek için bir for döngüsü:var data = new List<double>();
foreach(var row in file_contents)
{
var d = double.Parse(row);
data.Add(d);
}
Sonra istisna double.Parse
çağıran dize vurgulamak istiyorum, ve kolay kolay sorun ne girdi görmek için row
üzerinde fare mümkün olacaktır oldu.
Elbette LARL ifadelerimi for döngülere dönüştürmek için Resharper'ı kullanabilir ve daha sonra bunları ayıklayabilirim, ancak daha iyi bir yol var mı?
bu LINQ Ne biçim bir EAP? SQL'e EF veya LINQ? –