2013-03-07 3 views
0

У нас есть базовая коллекция, содержащая строки, и мы хотели бы использовать LINQ для присоединения к этой коллекции на основе int, возвращенного из базы данных (в том же выражении linq), но коллекция не имеет «индекс» как таковой, поэтому мы надеялись, что мы можем просто ссылаться на индекс коллекции, т. е. где элемент помещается в коллекцию.LINQ присоединяется к коллекции с использованием индекса

В простых терминах вне LINQ мы будем делать

string MyString = MyCollection[MyIndex]; 

, но это не поддерживается в LINQ.

Любая помощь будет оценена по достоинству.

+0

Какой Linq-провайдер вы используете? –

+0

Ваш вопрос, что вы хотите выбрать каждый n-й символ в каждой строке? – MrFox

ответ

2

ссылаться на индекс в LINQ запрос можно использовать следующие перегрузками Select() или Where()

collection.Select((item, index) => new { item, index }) 
      .Select(p => /* now you can refer to p.item and p.index */); 

collection.Where((item, index) => index == indexFromDb); 

Также LINQ предоставляет ElementAt()/ElementAtOrDefault() методов, позволяет получить доступ один элемент по индексу

+0

Это в выражении edf linq в C#. Надеюсь, существует метод типа «join»? – xnetdude

+0

Посмотрите здесь, как Linq объединяют операторы: [LINQ - Join Operators] (http://code.msdn.microsoft.com/LINQ-Join-Operators-dabef4e9) –

+0

Когда мы пытаемся использовать «ElementAt», мы получаем это во время выполнения: - LINQ to Entities не распознает метод «System.String ElementAt [String] (System.Collections.Generic.IEnumerable1) [System.String], Int32), и этот метод не может быть переведен в выражение хранилища. – xnetdude

0

Если вы имеете в виду ваша коллекция Linq не является индексируемой (доступной по индексу, например MyCollection[0]), вы можете взять полученную в результате коллекцию и позвонить ToList() или ToArray(). Полученный список (или массив) имеет индекс.

+0

Мы используем ObservableCollection, поэтому у него есть счетчик, но у него нет специального свойства индекса, которое мы можем ссылаться в linq «join» – xnetdude

+0

. Я объяснил свою проблему немного лучше здесь http://stackoverflow.com/questions/15273142/ join-collection-inside-an-entity-linq-statement – xnetdude

+1

Хорошо, но в следующий раз, пожалуйста, обновите свой исходный вопрос, а не создайте новый. –

Смежные вопросы