Subsonic 3 Linq إسقاط أنواع مجهولة ولكن ليس أنواع الفئة
-
20-09-2019 - |
سؤال
أنا جديد إلى حد ما للفرطية 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
كما كان من قبل.