Инициализация Поиска <интервал, строка>

Как я объявляю новый класс поиска для свойства в объектной стандартной программе инициализатора в c#?

Например.

new Component() { ID = 1, Name = "MOBO", Category = new Lookup<int, string> } 

Категория укусила, всегда получают ошибку компиляции.


Мне назвали свойство Category это имеет тип Lookup<int, string> и я хочу инстанцировать этого свойства через

new Component() { ID = 1, Name = "MOBO", Category = new Lookup<int, string> };

Но я не могу закончить ошибки компиляции.

23
задан Vadim Ovchinnikov 28 January 2018 в 17:19
поделиться

3 ответа

Согласно документации MSDN, не существует общедоступного конструктора для класса Lookup : http: // msdn. microsoft.com/en-us/library/bb460184.aspx

Вы можете создать экземпляр Lookup , вызвав ToLookup для объекта, реализующего IEnumerable .

Вы захотите сделать что-то вроде:

new Component { ID = 1, Name = "MOBO", Category = new[] { … }.ToLookup(…) }

Обновите, чтобы ответить на комментарии:

Я не уверен, откуда вы получаете информацию о своей категории, поэтому я что-нибудь придумаю…

new Component {
    ID = 1, 
    Name = "MOBO", 
    Category = new Dictionary<int, string> { 
        { 3, "Beverages" }
        { 5, "Produce" }
    }.ToLookup(o => o.Key, o => o.Value)
}

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

22
ответ дан 29 November 2019 в 02:24
поделиться

Вы не можете просто использовать ToLookup; вы должны указать ему, как находить ключи и значения:

// from ChaosPandion's code
using System.Linq; // make sure you have the using statement 

var component = new Component()  
{  
    ID = 1,  
    Name = "MOBO",  
    Category = (Lookup<int, string>)
       (new Dictionary<int, string>() { {1, "one"} })
       .ToLookup(p=>p.Key, p=>p.Value)
}  

Я не понимаю, почему вы хотите использовать здесь поиск вместо словаря.

1
ответ дан 29 November 2019 в 02:24
поделиться

Из MSDN :

Нет общедоступного конструктора для создания нового экземпляра Lookup .
Кроме того, объекты Lookup неизменяемы, то есть вы не можете добавлять или удалять элементы или ключи из Lookup после того, как он был создан.

8
ответ дан 29 November 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: