Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 3
1
.NET 4.x

Проблемы с пониманием Linq

08.08.2018, 12:35. Просмотров 573. Ответов 9
Метки нет (Все метки)


Учу LINQ . Вопрос такого характера :
C#
1
2
3
4
5
6
7
8
9
10
11
        public T this[int index]
        {
            get
            {
                var item = from i in _base 
                            where i.Id == index 
                            select i;
                return i;
 
            }
        }
Каким образом получить объект а не перечислитель?



Сорри за мой русский.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2018, 12:35
Ответы с готовыми решениями:

Проблемы с построением и работой запроса на LINQ
Здравствуйте! У меня возникла проблема с выполнением запроса, вот код: IEnumerable<DataRow>...

Linq или не Linq. Linq медленней стандартных методов?
Есть у нас два массива, нужно найти совпадения в первом из второго. Два варианта реализации, первый...

Литература по EntityFramework, WCF, Linq to Objects, и Linq to SQL
Посоветуйте пожалуйста книги или статьи для освоения следующих вещей: EntityFramework, WCF, Linq to...

Не удаётся неявно преобразовать тип System.Linq.IQueryable<<anonymous type>> в System.Linq.IQueryable<Character>
Здравствуйте. Решили добавить навигацию на страницу и где-то допустили ошибку. Помогите пожалуйста...

9
Эксперт .NET
7522 / 5016 / 1194
Регистрация: 25.05.2015
Сообщений: 15,297
Записей в блоге: 14
08.08.2018, 12:39 2
item - перечисление.
Вам какой объект из него нужен? Первый, последний? А если ничего не найдено?
0
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 3
08.08.2018, 12:50  [ТС] 3
Нужно получить объект T

C#
1
2
3
4
    public class PhoneData<T> : IEnumerable<T> where T : Phone
    {
 
        private List<T> _dataStore = new List<T>();
C#
1
2
3
4
5
 Console.Write("Choose the Phone: ");
                            int choice = Convert.ToInt32(Console.ReadLine());
                            if (library.Contains(phoneData[choice]))
                            {
                                Console.WriteLine($"You have choosen the: [{phoneData[choice].Title}]");
Кусок кода
0
Эксперт .NET
7522 / 5016 / 1194
Регистрация: 25.05.2015
Сообщений: 15,297
Записей в блоге: 14
08.08.2018, 12:57 4
Нет ответа на вопрос.
0
0 / 0 / 0
Регистрация: 17.05.2018
Сообщений: 3
08.08.2018, 13:01  [ТС] 5
Наверное , я плохо поставил вопрос.
0
Эксперт .NET
7522 / 5016 / 1194
Регистрация: 25.05.2015
Сообщений: 15,297
Записей в блоге: 14
08.08.2018, 13:07 6
Ответьте, что вы хотите получить, если в списке окажется несколько подходящих объектов или ни одного?
0
18 / 13 / 10
Регистрация: 06.11.2016
Сообщений: 58
08.08.2018, 13:26 7
C#
1
2
3
4
public T this[int index]
{
    get =>  _base.Where(x => x.Id == index).FirstOrDefault();
}
Если _base - это List<T>, тогда так:
C#
1
2
3
4
public T this[int index]
{
    get =>  _base.Find(x => x.Id == index);
}
Добавлено через 4 минуты
Если _base - массив, тогда так
C#
1
2
3
4
public T this[int index]
{
    get =>  Array.Find(_base, x => x.Id == index);
}
0
Эксперт JS
5305 / 3066 / 1482
Регистрация: 14.06.2018
Сообщений: 5,817
08.08.2018, 14:51 8
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    public class Phone
    {
        public string Title { get; set; }
    }
    public class SmartPhone : Phone
    {
    }
    public class StationarPhone : Phone
    {
    }
    public class PhoneData : IEnumerable<Phone>
    {
 
        private List<Phone> _dataStore = new List<Phone>();
 
        public Phone this[int index]
        {
            get => _dataStore[index];
            set => _dataStore[index] = value;
        }
        public IEnumerator<Phone> GetEnumerator() => _dataStore.GetEnumerator();
 
        IEnumerator IEnumerable.GetEnumerator() => _dataStore.GetEnumerator();
 
        public void Add(Phone phone)
        {
            _dataStore.Add(phone);
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            var phoneData = new PhoneData() {
                new SmartPhone() { Title = "SmartPhone" },
                new StationarPhone() { Title = "StationarPhone" },
                new Phone() { Title = "Phone" }
            };
 
            Console.Write("Choose the Phone: ");
            int choice = Convert.ToInt32(Console.ReadLine());
            if (choice >= 0 && choice < phoneData.Count())
            {
                Console.WriteLine($"You have choosen the: [{phoneData[choice].Title}]");
            }
            else
                Console.WriteLine($"Your choice must be between 0 and {phoneData.Count()}");
            Console.ReadKey();
        }
    }
0
Wanna be serious
576 / 466 / 183
Регистрация: 31.07.2013
Сообщений: 1,679
08.08.2018, 21:24 9
Вам бы сначала разобраться с таким понятием как множества, а ещё лучше - прочитать что-нибудь по SQL, а уже потом проецировать полученные знания на работу с LINQ
0
Эксперт JS
5305 / 3066 / 1482
Регистрация: 14.06.2018
Сообщений: 5,817
08.08.2018, 21:56 10
Bespridelschic, у ТС неполное понимание ООП, пару месяцев надо позакреплять. Потом LINQ можно поизучать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2018, 21:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Нужна помощь с пониманием и коментированием кода классов "Доктор"
нужна помощь с пониманием и коментированием кода. кто сможет помочь??? напишите в ЛС

Вычисление предела, проблемы с пониманием
дан предел функции \lim_{x\rightarrow \propto } \frac{sin^3 (ax)}{x^2} используя правило...

Проблемы с пониманием этого вашего С
Доброго времени суток, помогите измучевшемуся и страждущему так сказать... Счас вот разбираюсь...

Проблемы с пониманием вычислений по модулю
Подскажите, пожалуйста, у меня проблемы с пониманием вычислений по модулю. Я понимаю, что это за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.