LINQ 쿼리에서 반환 된 익명 형식의 목록에서 n 번째 요소를 가져 오려고합니다. 여기서 n은 0에서 100까지의 임의의 숫자입니다. 지금은 잠시 들러서 아무데도 못갑니다. . 내 코드 (이름은 IP를 보호하기 위해 변경) :쿼리가 익명 형식을 반환 할 때 LINQ에서 가져 오기를 사용할 수 있습니까?
var query = from Table1 t1 in theContext.Table1
join Table2 t2 in theContext.Table2
on ...
where ...
select new
{
partNum = t1.part_number,
partSource = t2.part_source
}
int num = new Random().Next(0, 100);
// here's where the code I've tried fails
은 어떻게 든 partNum와 partSource 단일 익명 형식을 얻기 위해 Take<T>(100).ToList<T>()[num]
을 할 수 있습니까? 나는 유형을 명시 적으로 정의함으로써이를 해결했지만, 여기서는 좀 더 우아한 해결책을 놓친 것처럼 보였다. 내가하고 싶은 일은 호출자에게 Dictionary<string, string>
을 반환하는 것이므로이 메서드 외부에 형식을 정의하지 않아도됩니다.
업데이트 : ElementAt가 작동하지 않습니다. 나는 추가 시도 :
// get a random part from the parts list
int num = new Random().Next(0, query.Count() - 1);
var nthElement = query.ElementAt(num);
을 그리고 난 예외를 가지고 : The query operator 'ElementAt' is not supported.
여기에 뭔가가 빠졌습니까? 그는 단지 ElementAt 함수를 사용하고 싶지 않습니까? – Noldorin
(응답으로 다른 응답으로 표시) –
ElementAt가 반환합니다. "ElementAt가 지원되지 않습니다. ... System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall (MethodCallExpression mc)" – jcollum