SubSonic 3 Linq projetando tipos anônimos, mas não tipos de class

Eu sou relativamente novo no SubSonic 3 / Linq, e não sei se estou perdendo algo óbvio, mas acho que me deparei com um problema de projeção. Eu estou tentando executar a consulta mais básica e obter resultados adequados somente quando eu uso tipos anônimos. No momento em que troco os tipos anônimos com tipos de class regulares, obtenho todas as propriedades definidas como nulas / zero. Eu estou criando uma biblioteca de classs DAL, então, infelizmente, tipos anônimos não são uma opção.

Snippet

using System; using System.Linq; using Fruits.Data; namespace FruitTest { class Program { static void Main(string[] args) { var db = new FruitsDB(); var fruits = from f in db.Fruits select new FruitView { MyFruitID = f.FruitID, MyFruitName = f.FruitName, }; foreach (var f in fruits) { Console.WriteLine(f.MyFruitID + "\t" + f.MyFruitName); } } } public class FruitView { public int MyFruitID { get; set; } public string MyFruitName { get; set; } } } 

Então isso não funciona (retorna todos os nulos / zeros)

 var fruits = from f in db.Fruits select new FruitView { MyFruitID = f.FruitID, MyFruitName = f.FruitName, }; 

Isso funciona como esperado

 var fruits = from f in db.Fruits select new { MyFruitID = f.FruitID, MyFruitName = f.FruitName, }; 

Meu problema é um pouco semelhante a isso e isso , só que eu não estou nem fazendo junções; apenas simples seleciona.

Qualquer pista será muito apreciada.

Não há uma resposta real para isso. Eu encontrei isso mais vezes, então não. mantendo a ordem de atribuição igual à ordem de ajuda de leitura. ie. em Tempo de debugging se você vir o QueryText e ver em que ordem as colunas são lidas do db. e, em seguida, mantenha a atribuição igual à ordem de sql Select Statement in QueryText. Resolve o problema 9 de 10 vezes.

Tente isso:

 IList fruits = ( from f in db.Fruits select new FruitView { MyFruitID = f.FruitID, MyFruitName = f.FruitName }).ToList(); 

ou

 IQueryable fruits = from f in db.Fruits select new FruitView { MyFruitID = f.FruitID, MyFruitName = f.FruitName }; 

..e foreach como antes.