SUBSONCY 3 LINQ 익명 유형을 투사하지만 클래스 유형은 아닙니다.
-
20-09-2019 - |
문제
나는 Subsonic 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,
};
내 문제는 다소 비슷합니다 이것 그리고 이것, 나는 단지 내가 합류하지도 않는다. 간단한 선택 만하면됩니다.
모든 단서는 대단히 감사 할 것입니다.
올바른 솔루션이 없습니다
다른 팁
이것에 대한 진정한 대답은 없습니다. 나는 이것을 더 자주 만난 적이 없다. 과제 순서를 읽기 도움의 순서와 동일하게 유지합니다. 즉. 디버그 시간에서 QueryText가 표시되고 열이 DB에서 읽는 순서를 표시하는 경우. 그런 다음 과제를 QueryText에서 SQL Select 문의 순서와 동일하게 유지하십시오. 문제를 10 번 중 9 번으로 해결합니다.
대신 시도해보십시오.
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
이전과.
제휴하지 않습니다 StackOverflow