2012-04-17 2 views
0

Мой результат ВыражениеКак извлечь результат выражения Linq?

var result = dtFields.AsEnumerable().Join(dtCDGroup.AsEnumerable(), 
           fieldList=>fieldList.Field<string>("CDGroupID"), 
           cd=>cd.Field<string>("CDGroupID"), 
           (fieldList,cd) => new 
           { 
            FieldID = fieldList.Field<string>("FieldID"), 
            Name = cd.Field<string>("Name"), 
            CDCaption = fieldList.Field<string>("CDCaption"), 
            Priority = ((cd.Field<string>("Priority") == null) ? 99 : cd.Field<int>("Priority")), 
            fldIndex = fieldList.Field<string>("fldIndex") 
           }).OrderBy(result => result.Priority).ThenBy(result => result.fldIndex); 

Кастинг выше результата на массив или список бросками недопустимое исключение произнесения. Как извлечь результат вышеуказанного выражения?

ответ

2

Добавить .ToArray() или .ToList() вызова соответственно

+0

ToArray() или .ToList() выдает недопустимое исключение литья –

+0

Может ли это быть вызвано самим запросом? Для первого взгляда: fieldList.Field ("fldIndex") Является ли fldIndex строкового типа? – Alex

0

Попробуйте добавить тип сильно типизированных:

public class NewModule 
{ 
    public int FieldID { get; set; } 
    public string Name { get; set; } 
    public string CDCaption { get; set; } 
    public int Priority { get; set; } 
    public int fldIndex { get; set; } 
} 

вместо анонимного типа, то вы могли бы использовать ToList<NewModule>() так:

var result = dtFields.AsEnumerable().Join(dtCDGroup.AsEnumerable(), 
          fieldList=>fieldList.Field<string>("CDGroupID"), 
          cd=>cd.Field<string>("CDGroupID"), 
          (fieldList,cd) => new NewModule 
          { 
           FieldID = fieldList.Field<string>("FieldID"), 
           Name = cd.Field<string>("Name"), 
           CDCaption = fieldList.Field<string>("CDCaption"), 
           Priority = ((cd.Field<string>("Priority") == null) ? 99 : cd.Field<int>("Priority")), 
           fldIndex = fieldList.Field<string>("fldIndex") 
          }).OrderBy(result => result.Priority) 
          .ThenBy(result => result.fldIndex) 
          .ToList<NewModule>(); 
Смежные вопросы