Frage

Ich bin ziemlich neu in SubSonic 3/Linq und weiß nicht, ob mir etwas Offensichtliches fehlt, aber ich glaube, ich bin auf ein Projektionsproblem gestoßen. Ich versuche, die grundlegendste Abfrage auszuführen und die richtigen Ergebnisse zurückzubekommen, nur wenn ich anonyme Typen verwende. In dem Moment, in dem ich die anonymen Typen mit regulären Klassentypen tausche, lasse ich alle Eigenschaften auf Null/Null einstellen. Ich mache eine DAL -Klassenbibliothek, daher sind anonyme Typen leider keine Option.

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; }
    }

}

Das funktioniert also nicht (gibt alle Nulls/Nullen zurück)

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

Dies funktioniert wie erwartet

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

Mein Problem ist etwas ähnlich wie Dies und Dies, Nur ich mache nicht einmal Joins; Nur einfach ausgewählt.

Alle Hinweise werden sehr geschätzt.

Keine korrekte Lösung

Andere Tipps

Es gibt keine wirkliche Antwort darauf. Ich habe das öfter begegnet als nicht. Halten Sie die Reihenfolge der Zuordnung wie die Reihenfolge der Leselementhilfe. dh. In der Debug -Zeit, wenn Sie den QueryText sehen und in welcher Reihenfolge die Spalten von DB gelesen werden. und behalten Sie die Zuordnung wie die Reihenfolge der SQL -Auswahlanweisung in QueryText auf. Löst das Problem 9 von 10 Mal.

Versuchen Sie es stattdessen:

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

oder

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

..und foreach wie vorher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top