我对亚音速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,
             };

我的问题与 这个这个, ,只有我什至没有加入;只是简单的选择。

任何线索都将不胜感激。

没有正确的解决方案

其他提示

没有真正的答案。我经常遇到这一点。保持分配顺序与阅读帮助顺序相同。 IE。在调试时间中,如果您看到查询文本并以从db读取列的顺序。然后将分配与QueryText中的SQL Select语句的顺序保持相同。解决问题中的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