Palamar66
Palamar66

Reputation: 220

C# how can I access an element in nested array

Type of the array

ReplyKeyboardMarkup replyKeyboardMarkup = new(new[]
                {
                 new KeyboardButton[]{ "January", "February", "March", "April"},
                 new KeyboardButton[]{ "May", "June", "July", "August"},
                 new KeyboardButton[]{ "September", "October", "November", "December"},
                })

I have the following code, where ReplyKeyboardMarkup is a custom class from telegram.Bot api from nuget packages. How can I access a specified element, like first string in first KeyboardButton array (January)?

Upvotes: 0

Views: 80

Answers (1)

Tim Schmelter
Tim Schmelter

Reputation: 460288

You are looking for the Keyboard property:

string january = replyKeyboardMarkup.Keyboard
        .FirstOrDefault()?.FirstOrDefault()?.Text;

The Text property comes from the KeyboardButton and is what you have specified.

You have commented that you want to access it as a real array, because you want to modify each button easily. Then you can use this approach:

KeyboardButton[][] kbButtonArray = replyKeyboardMarkup.Keyboard as KeyboardButton[][]
            ?? replyKeyboardMarkup.Keyboard.Select(x => x.ToArray()).ToArray();    

Actually the try-cast already works in the current implementation, so no need for the LINQ query. But since it it's an IEnumerable<IEnumerable<KeyboardButton>> that cast might fail in future.

Upvotes: 1

Related Questions