2016-03-21 21 views
1

Temel olarak bir Gridview'in satır rengini belirli değerlere bağlı olarak değiştirmem gerekiyor. İşte ne var:C# eşdeğeri sql değerinin "Burada IN değeri ('a', 'b', 'c')"

if ((String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "A" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "B" || (String)DataBinder.Eval(e.Row.DataItem, "STATUS") == "C") 
{ 
    e.Row.BackColor = Color.Yellow; 
} 

yerine kullanmak zorunda, ben daha net arıyorum (ya da ben daha güzel demeliyim) biz sql var ne benzer şekilde, || Operatör:

IF STATUS in('A','B','C') 

cevap

4

Kullanım LINQ Contains gibi:

if(new[] {"A", "B", "C"} 
     .Contains((String)DataBinder.Eval(e.Row.DataItem, "STATUS"))) 

sonra davayı görmezden isterseniz:

if (new[] {"A", "B", "C"} 
    .Contains((String) DataBinder.Eval(e.Row.DataItem, "STATUS"), 
     StringComparer.InvariantCultureIgnoreCase)) 
{ 

} 
+0

Tam olarak aradığım şey. O LINQ eşyalarına girmelisin! –

+1

Her bir hücre için dizi oluşturmanın iyi bir fikir olmadığını düşünüyorum. – gabba

1

Sen statik inşa, bu görev için kullanımını engellemek için set deneyebilirsiniz çalışma zamanında değişmezse veya dinamik olarak oluşturun:

var statuses = new HashSet<string> 
{ 
    "A", 
    "B", 
    "C" 
} 

ve bunun gibi kontrol edin: hedefinize ulaşmak için

statuses.Contains((String)DataBinder.Eval(e.Row.DataItem, "STATUS")) 
0

Tek yön senin şartlı içinde List arasında Contains yöntemini öğelerin geçici List oluşturmak ve kullanmaktır:

var yellowStatuses = new List<string> { "A", "B", "C" }; 
var currentStatus = (String)DataBinder.Eval(e.Row.DataItem, "STATUS"); 
if (yellowStatuses.Contains(currentStatus)) 
    e.Row.BackColor = Color.Yellow; 

Düzenleme: @Habib cevabı bana döver ve de temizler. :)

0

Bu, buna yaklaşmanın en iyi yolu değil, ama bu linq sorgusunun size yardımcı olabileceğini düşünüyorum.

if ((new string[] {"A","B","C"}).Any(x=>x==(String)DataBinder.Eval(e.Row.DataItem, "STATUS"))) 
0

Bunun için Sözlük yaklaşımını kullanabilirsiniz. Güzel kısım, mantığın tek merkezde ve merkezileştirilebileceği bir yerde tutmanızdır.

var colorStatus = new Dictionary<string,Color>(); 
colorStatus["A"] = Color.Yellow; 
colorStatus["B"] = Color.Yellow; 
colorStatus["C"] = Color.Yellow; 

Ve şimdi daha sonra bu sözlüğü sınamak ve sonra atamak için kullanabilirsiniz.

İlgili konular