2017-10-24 3 views
0

Ich habe diese Tabelle:C# Abfrageergebnis als Index in der Tabelle

string[] arr1 = new string[] { "one", "two", "three" }; 

Und diese Anfrage:

var result = (from i in dc.Ses 
         where i.id == id 
         select 
         new 
         { 
          id = i.id, 
          FullName = i.FullName, 
          Type = i.Type 
         }).ToList(); 

Aber ich will verändern die result so Type diese arr1[i.Type] enthalten wird. Da i.Type NULL-Werte zulässt, wenn i.Type == null dann Type = null auch

+0

Hinweis aufzuspalten, wenn 'i.Type' keine Zahl ist und nicht in Reichweite werden Sie bekomme eine Ausnahme. Was ist das Problem, diese Linie zu ändern? –

+0

es ist eine Nummer und es ist in Reichweite. aber nullable – aggicd

+0

Verwenden Sie einfach "i.Type.Value" oder "i.Type.GetValueOrDefault (SomeDefaultNumberHere)" und stellen Sie sicher, dass Sie den Fall eines Nullwerts mit Standard behandeln. –

Antwort

0
Type = i.Type.HasValue ? arr1[i.Type] : null 

EDIT die Abfrage

var partialResult = (from i in dc.Ses 
         where i.id == id 
         select 
         new 
         { 
          id = i.id, 
          FullName = i.FullName, 
          RawType = i.Type 
         }); 

var finalResult = partialResult.AsEnumerable().Select(entry => new { 
    ... 
    Type = entry.RawType.HasValue ? arr1[entry.RawType] : null 
}); 
+0

Ich erhalte diesen Fehler: Unbekannter Ausdruck Knoten: ArrayIndex – aggicd

+0

das ist, weil ich nehme an, dass Typ ist eine Zeichenfolge und der Index erwartet ein int. mit anderen Worten, wenn type == "drei" dann willst du arr1 [2] nicht arr1 ["drei"] – Muckeypuck

+0

@Muckeypuck nein i.Typ ist int – aggicd

Verwandte Themen