Итак, вот моя ситуация. У меня есть два класса:
class FromClass
{
public string[] Foo { get; set; }
}
class ToClass
{
public string[] Foo { get; set; }
}
Классы имеют свойства, которые являются массивами. Это могут быть List<T>
или IEnumerable<T>
, я получаю один и тот же результат в любом из этих случаев.
Я пытаюсь сопоставить одно с другим, используяAutoMapper.QueryableExtensions
:
class Program
{
static void Main(string[] args)
{
// create a "From" object
string[] anArray = new string[] { "a", "b" };
FromClass anObject = new FromClass() { Foo = anArray };
// make a queryable set that includes the "From" object
IQueryable<FromClass> queryableObjects = (new FromClass[] { anObject }).AsQueryable();
// set up AutoMapper
Mapper.CreateMap<FromClass, ToClass>();
Mapper.AssertConfigurationIsValid();
// test plain mapping
IQueryable<ToClass> test1 = queryableObjects.Select(o => Mapper.Map<FromClass, ToClass>(o));
// success!
// test queryable extensions
IQueryable<ToClass> test2 = queryableObjects.Project().To<ToClass>();
// InvalidOperationException: "Sequence contains no elements"
}
}
Почему test2 выдает InvalidOperationException
? Если я сделаю тип Foo
чем-то, что не является коллекцией, например. a string
или какой-то другой класс --, тогда все работает отлично.
Я что-то не так делаю?Что-то не понял? Или я наткнулся на ошибку?