6

这是我为 jqGrid 创建 Json 响应和定义单元格成员的关键字的代码,我收到以下消息“未找到隐式类型数组的最佳类型”。

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();

我在这里做错了什么?

4

4 回答 4

8

假设Reference,Currency1Currency2是字符串,只需将其声明为字符串数组:

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();
于 2012-06-28T13:13:19.587 回答
1

如果您为 jqGrid 准备数据(如在您的代码中),您可以定义自己的 jsonReader 并跳过单元格数组(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data):

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

然后是这样的:

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()
}
于 2013-09-08T10:59:17.500 回答
0

我遇到了同样的问题,发现如果数组中的所有数据项都是相同的类型(例如 String),那么类型就会被推断出来,编译器不会抱怨new[]

于 2013-04-21T18:16:05.920 回答
0

如果集合的成员是函数,它仍然会给出编译器错误。即使集合中只有一个功能!

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

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

//...
public void Foo() { }
于 2017-07-07T03:42:03.447 回答