我正在使用.NET Framework 4.6.2,Entity Framework 6.1.3和Repository模式开发一个C#库。
我想在select中创建private
,如下所示:
KeyValuePair<byte, string[]>
但是Dictionary<string, byte> dict =
GetAggregationLevelsNameId(arvatoConnectionString, productionOrderId);
KeyValuePair<byte, string[]>[] codes = null;
List<Data.Code> aCodes =
repo.SearchFor(c => c.ProductionOrderId == productionOrderId).ToList();
if ((aCodes != null) && (aCodes.Count > 0))
{
codes =
aCodes
.Select(ac => new { ac.Level, ac.Serial })
.AsEnumerable()
.Select(ac => new KeyValuePair<byte, string[]>(dict[ac.Level], ac.Serial))
.ToArray();
}
我收到以下错误:
无法将字符串转换为字符串[]。
如何在该选择中创建.Select(ac => new KeyValuePair<byte, string[]>(dict[ac.Level], ac.Serial))
?
我想将KeyValuePair<byte, string[]>
的所有ac.Serial
分组到ac.Level
。
KeyValuePair
是一个结构,我没有在任何地方声明它。我在这里创建ac
。
Select(ac => new { ac.Level, ac.Serial })
是ac.Level
。
string
是ac.Serial
。
更新:
我有这个代码可以将select转换为string
(请注意,以下字典的密钥为Dictionary
,而不是我想要创建的string
密码:
byte
更新2 :
GenericRepository<Data.Code> repo =
new GenericRepository<Data.Code>(context);
codes =
repo
.SearchFor(c => c.ProductionOrderId == productionOrderId)
.GroupBy(c => c.Level)
.ToDictionary(dic => dic.Key, dic => dic.Select(c => c.Serial).ToList());
是一个POCO对象,表示一个数据库表,其中有很多Data.Code
具有相同的Serial
。
答案 0 :(得分:2)
试试这个
codes =
aCodes
.AsEnumerable()
.GroupBy(ac => dict[ac.Level])
.Select(ac => new KeyValuePair<byte, string[]>(ac.Key, ac.Select(a => a.Serial).ToArray()))
.ToArray();
或者到字典:
codes =
aCodes
.AsEnumerable()
.GroupBy(ac => dict[ac.Level])
.ToDictionary(ac => ac.Key, ac.ToArray());