如何从对象数组中获取键值对

时间:2018-10-30 16:09:01

标签: c# arrays .net list linq

Attempt 2 result

我在数据库中有两个表 表一具有两列FieldId和Value的“ DocumentFieldValues”和 表两个具有主键FieldId和FieldName的“字段”

我事先知道FieldName,并且想将它们作为键。大约有100个键/值对。

Attempt 1 

   var attempt1= db.DocumentFieldValues.Where(x => x.PolicyDocumentId == id).Include(x => x.Field ).ToList();

尝试2

        var documentFieldValues = this.db.DocumentFieldValues.Where(x => x.PolicyDocumentId == id).ToArray();

        var bindingStringAndValue = from documentFieldValue in documentFieldValues
                       join field in this.db.Fields on documentFieldValue.FieldId equals field.FieldId
                       select new {  field.BindingString,  documentFieldValue.Value } ;

我基本上需要能够执行data.FieldName并使用对后端的jQuery ajax调用在前端检索值,只是需要以正确的格式传递此数据。

非常感谢您的帮助。

我刚刚制作了这个作品,但这是最好的方法吗? 我只有4个月的工作经验,只有1年的自学经验,没有后端代码,所以不要讨厌大声笑,我觉得性能很不错

    IDictionary<string, string> dict = new Dictionary<string, string>();

        foreach (var item in bindingStringAndValue)
        {
            dict.Add(item.BindingString, item.Value);
        }

尝试4,这是我现在遇到的最好方法,谢谢@Orel Eraki

var dict = db.DocumentFieldValues .Where(dfv => dfv.PolicyDocumentId == id).Include(dfv => dfv.Field) .ToDictionary(dfv => dfv.Field.BindingString, dfv => dfv.Value);

1 个答案:

答案 0 :(得分:1)

您实际上做得很好。

如果希望将其值映射到Dictionary<string, string>中,则可以执行以下操作。

var dict = db.DocumentFieldValues
    .Where(dfv => dfv.PolicyDocumentId == id)
    .ToDictionary(dfv => dfv.Field.BindingString, dfv => dfv.Value);