Как получить пару ключ-значение из массива объектов - PullRequest
0 голосов
/ 30 октября 2018

Attempt 2 result

У меня есть две таблицы в БД Таблица 1 «DocumentFieldValues», которая имеет 2 столбца FieldId и Value и Таблица 2 «Поле», имеющее первичный ключ 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 и извлекать значение во внешнем интерфейсе, используя ajax-вызов jQuery для внутреннего интерфейса, просто нужно передать эти данные обратно в правильном формате.

Любая помощь очень ценится.

Я только что сделал это, и это работает, но разве это лучший способ? У меня только 4 месяца опыта работы и только 1 год без самоучки с бэкэнд-кодом, так что не ненавидите LOL Я чувствую, что с точки зрения производительности это довольно плохо

    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 голосов
/ 30 октября 2018

Вы действительно хорошо поработали.

Вы можете сделать следующее, если хотите, чтобы ваши значения отображались в Dictionary<string, string>.

var dict = db.DocumentFieldValues
    .Where(dfv => dfv.PolicyDocumentId == id)
    .ToDictionary(dfv => dfv.Field.BindingString, dfv => dfv.Value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...