Как получить подсписок в C#

У меня есть следующее в моем .emacs:

(if (window-system)
  (set-frame-height (selected-frame) 60))

Вы могли бы также посмотреть на функции set-frame-size, set-frame-position, и set-frame-width. Используйте C-h f (иначе M-x describe-function) для перевода в рабочее состояние подробной документации.

я не уверен, существует ли способ вычислить макс. высоту/ширину кадра в текущей оконной среде.

75
задан Prince 2 February 2014 в 02:53
поделиться

5 ответов

Вы хотите Список :: GetRange (firstIndex, счетчик). См. http://msdn.microsoft.com/en-us/library/21k0e39c.aspx

// I have a List called list
List sublist = list.GetRange(5, 5); // (gets elements 5,6,7,8,9)
List anotherSublist = list.GetRange(0, 4); // gets elements 0,1,2,3)

Это то, что вам нужно?

Если вы хотите удалить элементы подсписка из оригинала list, затем вы можете выполнить:

// list is our original list
// sublist is our (newly created) sublist built from GetRange()
foreach (Type t in sublist)
{
    list.Remove(t);
}
108
ответ дан 24 November 2019 в 11:40
поделиться

Будет ли это так же просто, как выполнить запрос LINQ для вашего списка?

List<string> mylist = new List<string>{ "hello","world","foo","bar"};
List<string> listContainingLetterO = mylist.Where(x=>x.Contains("o")).ToList();
6
ответ дан 24 November 2019 в 11:40
поделиться

Используйте предложение Where из LINQ:

List<object> x = new List<object>();
x.Add("A");
x.Add("B");
x.Add("C");
x.Add("D");
x.Add("B");

var z = x.Where(p => p == "A");
z = x.Where(p => p == "B");

В приведенных выше операторах «p» - это объект, который находится в списке. Итак, если вы использовали объект данных, например:

public class Client
{
    public string Name { get; set; }
}

, тогда ваш linq будет выглядеть так:

List<Client> x = new List<Client>();
x.Add(new Client() { Name = "A" });
x.Add(new Client() { Name = "B" });
x.Add(new Client() { Name = "C" });
x.Add(new Client() { Name = "D" });
x.Add(new Client() { Name = "B" });

var z = x.Where(p => p.Name == "A");
z = x.Where(p => p.Name == "B");
3
ответ дан 24 November 2019 в 11:40
поделиться

Инвертировать элементы в подсписке

int[] l = {0, 1, 2, 3, 4, 5, 6};
var res = new List<int>();
res.AddRange(l.Where((n, i) => i < 2));
res.AddRange(l.Where((n, i) => i >= 2 && i <= 4).Reverse());
res.AddRange(l.Where((n, i) => i > 4));

Дает 0,1,4,3,2,5,6

0
ответ дан 24 November 2019 в 11:40
поделиться

У вашего класса коллекции может быть метод, который возвращает коллекцию (подсписок) на основе критериев, переданных для определения фильтра. Создайте новую коллекцию с помощью цикла foreach и передайте ее.

Или попросите метод и цикл изменить существующую коллекцию, установив «отфильтрованный» или «активный» флаг (свойство). Это могло работать, но могло также вызвать проблемы в многопоточном коде. Если другие объекты зависят от содержимого коллекции, это либо хорошо, либо плохо, в зависимости от того, как вы используете данные.

0
ответ дан 24 November 2019 в 11:40
поделиться
Другие вопросы по тегам:

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