메소드에서 익명 유형을 어떻게 반환합니까?
-
09-06-2019 - |
문제
여러 곳에서 호출하고 싶은 Linq 쿼리가 있습니다.
var myData = from a in db.MyTable
where a.MyValue == "A"
select new {
a.Key,
a.MyValue
};
메서드를 만들고 이 코드를 삽입한 다음 호출하려면 어떻게 해야 합니까?
public ??? GetSomeData()
{
// my Linq query
}
해결책
IQueryable과 IEnumerable이 모두 작동합니다.하지만 유형별 버전인 IQueryable을 사용하고 싶습니다.<
티>
또는 IEnumerable <
티>
.
따라서 데이터를 보관할 유형을 만들고 싶을 것입니다.
var myData = from a in db.MyTable
where a.MyValue == "A"
select new MyType
{
Key = a.Key,
Value = a.MyValue
};
다른 팁
일반적인 방법은 Intellisense를 제공해야 합니다.
public class MyType {Key{get;set;} Value{get;set}}
public IQueryable<T> GetSomeData<T>() where T : MyType, new()
{ return from a in db.MyTable
where a.MyValue == "A"
select new T {Key=a.Key,Value=a.MyValue};
}
반환하려면 유형이 필요합니다.
대신에 var
, 다음을 사용하여 선언 IEnumerable<>
그리고 그 변수를 반환합니다.이를 반복하면 실제로 쿼리가 실행됩니다.
제휴하지 않습니다 StackOverflow