Проблема в том, что вы создаете новый список анонимного типа, а не List<DepositList>
. Вам просто нужно изменить ваше предложение select
на:
select new DepositList
{
Depid = (string) deposit.Attribute("depid"),
Amount = (string) deposit.Attribute("depamount"),
DepDate = (string) deposit.Attribute("depdate")
}
Обратите внимание, что я удалил использование свойства Value
- вам не нужно было ни , ни приведение к строке, ни использование явного преобразования из XAttribute
в string
вы получите null
вместо NullReferenceException
, если атрибут отсутствует.
Однако, мне кажется, что было бы лучше, если бы DepositList
было напечатано более строго, например:
public class DepositList
{
public int Depid { get; set; }
public decimal Amount { get; set; }
public DateTime DepDate { get; set; }
}
Тогда вы можете использовать:
select new DepositList
{
Depid = (int) deposit.Attribute("depid"),
Amount = (decimal) deposit.Attribute("depamount"),
DepDate = (DateTime) deposit.Attribute("depdate")
}
и LINQ to XML сделает преобразование за вас. (В этом случае вызовет исключение, если какой-либо атрибут отсутствует, так как я использую типы значений, не допускающие значения NULL.)
Обратите внимание, что я сделал Amount
a decimal
вместо double
. Вы должны не использовать double
для финансовых значений.