将多个Linq查询添加到字典查询结果

安纳普

我想将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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章