Невозможно неявно преобразовать вложенные объекты типа 'IEnumerable<ob>' в 'Generic.List<cdsworkflows>'
У меня ниже классы
public class cdsworkflows
{
public string WorkflowName;
public string ActionGroup;
}
public class cdssystems
{
public string cdsSystemName;
public List<cdsmodules> listModules;
}
public class cdsmodules
{
public string moduleName;
public List<cdsworkflows> listWorkflows;
}
Я помещаю значения в вышеуказанные объекты из таблицы со всеми этими данными, как показано ниже. Я получаю сообщение об ошибке "выберите новое", которое:
Невозможно неявно преобразовать тип
System.Collections.Generic.IEnumerable<cdsworkflows>
вSystem.Collections.Generic.List<cdsworkflows>
, Существует явное преобразование (вам не хватает приведения?)
Также, если вы видите последнюю строку ActionGroup = grpWorkflows.Count().ToString()
Я хочу присвоить значение, а не количество. Как это сделать.
List<cdssystems> results =
(from SPListItem item in myItemsList
group item by item["Systems"]
into grp
select new cdssystems()
{
cdsSystemName = grp.Key.ToString(),
listModules =
from item in grp
group item by item["Modules"]
into grpModules
select new cdsmodules()
{
moduleName = grpModules.Key.ToString(),
listWorkflows =
from item in grpModules
group item by item["Workflows"]
into grpWorkflows
select new cdsworkflows()
{
WorkflowName = grpWorkflows.Key.ToString(),
ActionGroup = grpWorkflows.Count().ToString()
}
}
}
).ToList();
1 ответ
Классы вашей модели содержат свойства типа List<T>
но в ваши вложенные запросы вы не добавляете ToList()
в проекции, так что создает IEnumerable<T>
и, следовательно, ошибка:
За listWorkflows
: изменить на:
listWorkflows = (from item in grpModules
group item by item["Workflows"] into grpWorkflows
select new cdsworkflows
{
WorkflowName = grpWorkflows.Key.ToString(),
ActionGroup = grpWorkflows.Count().ToString()
}).ToList()
Та же идея для cdsmodules
Для второй части вопроса я хочу присвоить значение, а не изменить счет:
ActionGroup = string.Join(", ", grpWorkflows.Select(i => i["ActionGroup"]))
Также:
- пожалуйста, обратитесь к соглашениям об именах C#: MSDN, dotFactory
- Я полагаю, что если вы определите свои поля как
public
иметь их как свойства. См. Это для справки: Свойства и поля. Нужна помощь в понимании использования свойств над полями.