سؤال

أنا جديد إلى حد ما للفرطية 3 / LINQ، ولا أعرف إذا فقدت شيء واضح، لكنني أعتقد أنني ركضت في قضية إسقاط. أحاول أداء الاستعلام الأساسي، واسترجع النتائج المناسبة فقط عندما أستخدم أنواع مجهولة الهوية. في اللحظة التي أقوم بها لأنواع مجهولة الأنواع ذات أنواع الدرجة العادية، أحصل على جميع الخصائص التي تم تعيينها إلى NULL / ZERO. أنا صياغة مكتبة فئة DAL، لذلك لأن أنواع مجهولة الهوية ليست خيارا.

مقتطف

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

}

لذلك هذا لا يعمل (إرجاع جميع nulls / zeros)

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

هذا يعمل كما هو متوقع

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

مشكلتي تشبه إلى حد ما هذه و هذه, أنا فقط لا أقوم بذلك؛ فقط يختار بسيطة.

أي أدلة موضع تقدير كبير.

لا يوجد حل صحيح

نصائح أخرى

لا توجد إجابة حقيقية على هذا. لقد واجهت هذا في كثير من الأحيان بعد ذلك. الحفاظ على ترتيب المهمة نفس ترتيب مساعدة القراءة. بمعنى آخر. في Debug Time إذا رأيت QueryText ومعرفة ما يتم قراءة الأعمدة من DB. ثم احتفظ بالمهمة نفس ترتيب عبارة SQL SELECT في QueryText. يحل المشكلة 9 من 10 مرات.

جرب هذا بدلا من ذلك:

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

أو

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

..و foreach كما كان من قبل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top