我想将3 linq的结果添加到单个字典中。
Dictionary<string, string> dict = new Dictionary<string, string>();
dict = ctx.tbl1.Where(a => a.Id == cid).ToDictionary(a => a.FieldName, a => a.LabelName);
dict = ctx.tbl2.Where(a => a.Id == cid).ToDictionary(a => a.FieldName, a => a.LabelName);
dict = ctx.tbl3.Where(a => a.Id == cid).ToDictionary(a => a.FieldName, a => a.LabelName);
return dict;
上面的代码给出了最后的dict
结果。如何将每个linq
查询结果添加到字典中?
试试这个:
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (var a in ctx.tbl1.Where(a => a.Id == cid)) dict.Add(a.FieldName, a.LabelName);
foreach (var a in ctx.tbl2.Where(a => a.Id == cid)) dict.Add(a.FieldName, a.LabelName);
foreach (var a in ctx.tbl3.Where(a => a.Id == cid)) dict.Add(a.FieldName, a.LabelName);
return dict;
不过,请注意以下几点:
如果相同(区分大小写)a.FieldName
出现在给定的多个表中,或者同一表中的多个表中出现相同的值,则将抛出该异常a.Id
。
基础数据库是否具有约束来防止这种情况发生?如果可能的话,除非数据的性质a.FieldName
足以使一个给定的数据合法地出现一次以上a.Id
。在后一种情况下,将它们映射到中ILookup
可能会更合适。
如果a.FieldName
不区分大小写,请使用不区分大小写的字符串比较器创建字典。
如果a.Id,a.FieldName
在三个表的汇总中应用唯一性,那么用一个表替换它们是否更有意义?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句