2012-06-28 26 views
6

To jest mój kod do tworzenia odpowiedzi Json dla jqGrid i do nowe słowo kluczowe do definiowania elementu komórki otrzymuję następujący komunikat "Nie znaleziono najlepszego typu dla niejawnie wpisanej tablicy ".Otrzymany błąd "Nie znaleziono najlepszego typu dla niejawnie wpisanej tablicy"

var resRows = results.Select(record => 
      new 
      { 
       id = record.Reference, 
       cell = **new** [] 
       { 
        record.Reference, 
        record.TradeDate.ToShortDateString(), 
        record.Currency1, 
        record.Currency2, 
        record.Notional.ToString(), 
        record.EffectiveDate.ToShortDateString(), 
        record.Quote.ToString()       
       } 
      }).ToArray(); 

Co ja tu robię źle?

Odpowiedz

8

Zakładając Reference, Currency1 i Currency2 są ciągi, wystarczy zadeklarować ją jako tablicy ciągów:

var resRows = results.Select(record => 

    new 
    { 
     id = record.Reference, 
     cell = new string [] 
     { 
      record.Reference, 
      record.TradeDate.ToShortDateString(), 
      record.Currency1, 
      record.Currency2, 
      record.Notional.ToString(), 
      record.EffectiveDate.ToShortDateString(), 
      record.Quote.ToString()       
     } 
    }).ToArray(); 
+2

@D Stanley, zrobiłem to i działa! Właściwie, jeśli nie byłyby to ciągi, mógłbym po prostu użyć 'cell = new object [] {...}'. –

0

miałem ten sam problem i okazało się, że jeśli wszystkie elementy danych w tablicy były tego samego typu (np String), a następnie typ został wywnioskowany i kompilator nie narzekał na new [].

1

Jeśli przygotowanie danych dla jqGrid (jak w kodzie), można zdefiniować własne jsonReader i po prostu pominąć tablicę komórek (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data):

jsonReader: { 
     root: "rows", 
     page: "page", 
     total: "total", 
     records: "records", 
     repeatitems: false, 
     userdata: "userdata" 
    }, 

Wtedy coś takiego:

var result = new 
{ 
    total = (int)count/grid.PageSize), 
    page = grid.PageIndex, 
    records = count, 
    rows = results.Select(record => 
        select new 
        { 
         Reference = record.Reference, 
         TradeDate = record.TradeDate, 
         .. 
        }).ToArray() 
} 
+0

Zamień "wybierz nowy" na "nowy" – Andrej

0

Jeśli członkowie kolekcji są funkcjami, nadal powoduje błąd kompilatora. Nawet jeśli w kolekcji jest tylko jedna funkcja!

var bads = new [] // COMPILER ERROR 
{ 
    Foo 
}; 

var goods = new Action[] // NO COMPILER ERROR 
{ 
    Foo 
}; 

//... 
public void Foo() { } 
Powiązane problemy