Вместо того чтобы использовать анонимный тип для проецирования в DataRowView
, лучше создать класс модели, у которого все его свойства имеют то же имя, что и у проецируемых свойств:
public class Practice
{
public string PracticeName { get; set; }
public long FileId { get; set; }
public string FileName { get; set; }
}
Затем измените запрос так, чтобы он содержалкласс модели:
var result2 = from t in dt.AsEnumerable()
where t.Field<string>("PracticeName") == practiceName && t.Field<string>("Provider") == Provider
select new Practice // add the model class name here
{
PracticeName = t.Field<string>("PracticeName"),
FileId = t.Field<long>("UploadFIlesID"),
FileName = t.Field<string>("FileName")
};
Наконец, используйте имя класса модели, как упомянуто выше, для приведения из объекта DataItem
для получения соответствующего экземпляра строки:
Practice practice = (Practice)e.Item.DataItem;