какое ключевое слово я должен использовать для "Типа" - PullRequest
0 голосов
/ 25 мая 2018

В моем проекте UWP у меня есть список, который называется Rooms, и это содержимое в этом списке:

public string RoomID { get; set; }
public string RoomName { get; set; }
public Visibility Projector { get; set; }
public int Seats { get; set; }
public string FrontImage { get; set; }
public string Note { get; set; }

Я пытаюсь вставить значение Projector в

Rooms.Add(new Room
{
    RoomID = id,
    RoomName = name,
    FrontImage = Img1,
    Seats = seats,
    Note = "Lorem ipsum dolor sit amet, co"
});

С этой строкой кода.

Rooms.Insert(1, new Room{ Projector = Visibility.Collapsed });

Но когда я использую ключевое слово new, создается новая комната, есть ли другое ключевое слово, которое я могу использовать, чтобы вставить "Проектор "ценность в моей уже существующей комнате?

Заранее спасибо!

РЕДАКТИРОВАТЬ:

foreach (var room in data)
{
    string id = room.id;
    string name = room.name;
    int seats = room.seats;
    List<Roomattribute> roomattrib = room.roomAttributes;
    foreach (var attri in roomattrib)
    {
        int attriId = attri.id;
        string attriName = attri.name;
        int attriIcon = attri.icon;
        if (attriId == 1)
        {
            Rooms.Insert(0, new Room{ Projector = Visibility.Collapsed });
        }  
    }
    Rooms.Add(new Room
    {
        RoomID = id,
        RoomName = name,
        FrontImage = Img1,
        Seats = seats,
        Note = "Lorem ipsum dolor sit amet, co"
    });
}

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Это то, что вы пытаетесь сделать?

foreach (var room in data)
{
    var newRoom = new Room()
    {
        RoomID = room.id,
        RoomName = room.name,
        FrontImage = Img1,
        Seats = room.seats,
        Note = "Lorem ipsum dolor sit amet, co"
    };

    //if any of the room's attribute's ID is 1
    if (room.roomAttributes.Any(a => a.id == 1))
        newRoom.Projector = Visibility.Collapsed;

    Rooms.Add(newRoom);
}

Или даже проще с одной строкой преобразования кода (обратите внимание, что для "null" ниже может потребоваться установить значение по умолчанию, если это enum).Это полностью исключает foreach и читает очень кратко.Вот как бы я написал этот код.

Rooms.AddRange(data.Select(a => new Room() {
        RoomID = a.id,
        RoomName = a.name,
        FrontImage = Img1,
        Seats = a.seats,
        Note = "Lorem ipsum dolor sit amet, co"
        Projector = a.roomAttributes.Any(a => a.id == 1) ? Visibility.Collapsed : null
    });
0 голосов
/ 25 мая 2018

Если вы просто пытаетесь редактировать свойство второй комнаты в вашем списке, как оно выглядит, потому что вы используете index = 1 (помните, что массивы и списки начинаются с нуля), тогда это довольно просто.РЕДАКТИРОВАТЬ: Вы сказали, что хотите отредактировать первое, поэтому единственное изменение, которое необходимо сделать, это использовать 0 в качестве индекса.

Rooms[0].Projector = Visibility.Collapsed;

Вышесказанное должно работать, если выпытаюсь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...