#c# #linq-to-entities
#c# #linq-to-entities (linq-to-entities)
Вопрос:
Я пытаюсь выбрать столбцы из базы данных, а затем создать одно свойство массива для каждого столбца и создать один объект.
public class Activity
{
public string[] Quiz { get; set; }
public int[] CompletedCount { get; set; }
}
Выходные данные базы данных из результатов будут возвращены в виде:
IQueryable<QuizCompletedCount> results = _logContext.QuizCompletedCounts;
Я получил значение из базы данных в следующем формате.
Week | Completed
---------------------------
Week 1 | 107
Week 2 | 104
Week 3 | 87
Week 4 | 49
Week 5 | 6
Я пытался таким образом:
List<int> activityCount = new List<int>();
List<string> activity = new List<string>();
foreach (var element in results)
{
activity.Add(element.Week);
activityCount.Add(element.Completed);
}
var obj = new QuizActivity();
obj.CompletedCount = activityCount.ToArray();
obj.Week = activity.ToArray();
Желаемый результат будет выглядеть следующим образом:
string str = "{"Week":["Week 1","Week 2","Week 3","Week 4","Week 5"],"CompletedCount":[107,104,87,49,6]}";
Существует ли linq
подход для выполнения этой задачи без использования foreach
и многократного преобразования из списка в массив?
Ответ №1:
Вы можете создать что-то вроде этого:
var result = new QuizActivity()
{
Week = results.Select(x => x.Week).ToList(),
CompletedCount = results.Select(x => x.Completed).ToList()
};
Комментарии:
1. может быть
.ToArray()
?2. Да, как вы пожелаете.