我在数据库中有两个表 表一具有两列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);
答案 0 :(得分:1)
您实际上做得很好。
如果希望将其值映射到Dictionary<string, string>
中,则可以执行以下操作。
var dict = db.DocumentFieldValues
.Where(dfv => dfv.PolicyDocumentId == id)
.ToDictionary(dfv => dfv.Field.BindingString, dfv => dfv.Value);