Я пытаюсь получить n-й элемент из списка анонимных типов, возвращаемых запросом LINQ, где n - это случайное число от 0 до 100. Теперь он обходит его, и я никуда не денусь , Мой код (с именами изменен для защиты IP):можно использовать Take в 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
Могу ли я каким-то образом сделать Take<T>(100).ToList<T>()[num]
, чтобы получить один анонимный тип с partNum и partSource? Я решил решить эту проблему, явно определяя тип, но мне показалось, что здесь отсутствует более элегантное решение. Все, что я хочу сделать, это вернуть 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