如何获取列表中字符串值的索引,并将其分配给linq中的字段



我是linq的新手,我写linq是这样的:

temp = mdl.T57.Select(v => new TestMDTDataSource()
{
    StatYear = v.StatYear,
    StatM = v.StatM,
    StatMonth = v.StatMonth,
    TransportMode = null,
    TradeType = v.TradeType,
    Country = v.Country,
    ItemCode = null,
    ItemDesc = null,
    ItemUnit = null,
    TradeValue = v.TradeValue,
    TradeQty = null,
    YtoY = v.YtoY,
    TopNIndex = (Nullable<int>)TopNCountryList.IndexOf(v.Country + 1)
});

但我得到"LINQ到实体不识别方法'Int32 IndexOf(System.String)'方法,并且此方法不能翻译成存储表达式"

TopNCountryList变量是一个字符串列表。首先选取2014年12月的数据,按TradeValue从小到大排序。我有一个国家列表,这是TopNCountryList。我最后的返回值是temp.ToList(),它是一个自定义对象的列表(所有属性都在上面的linq中列出,这个对象将被其他函数用于不同的查询结果)。这就是为什么我将TopNIndex设置为可空的原因。)我可以得到的结果,如果我改变"TopNIndex = (Nullable)TopNCountryList.IndexOf(v。"国家+ 1"到"TopNIndex = (Nullable) 1"我想按照2014年12月对所有数据(从2014年1月到2014年12月)的TradeValue顺序,给TopNIndex赋一个整数值linq支持IndexOf(System.String)吗?还是我做错了什么?还是……还有其他简单的方法吗?

如果您对数据库运行此操作,您将得到该错误。一种简单的方法是在执行查询时不填充该属性。但是在执行之后,您可以在内存中运行它。

temp = mdl.T57.Select(v => new TestMDTDataSource()
{
    StatYear = v.StatYear,
    StatM = v.StatM,
    StatMonth = v.StatMonth,
    TransportMode = null,
    TradeType = v.TradeType,
    Country = v.Country,
    ItemCode = null,
    ItemDesc = null,
    ItemUnit = null,
    TradeValue = v.TradeValue,
    TradeQty = null,
    YtoY = v.YtoY  
}).ToList();
temp.ForEach(v=>v.TopNIndex = (Nullable<int>)TopNCountryList.IndexOf(v.Country)+1);

相关内容

  • 没有找到相关文章

最新更新