C# - Используя LINQ для взятия двух переменных в 2-мерный массив?

В домашнем каталоге hadoop откройте файл etc / hadoop / hadoop-env.sh и добавьте следующие строки для устранения ошибки:

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

Вы можете добавить свое имя пользователя, заменив root в вышеприведенных командах. ]

6
задан Neil Knight 16 February 2011 в 11:06
поделиться

2 ответа

Вы необходимо определить вспомогательный метод, который разделяет регион на 2 части, и это намного проще представить, используя новую структуру вместо 2D-массива

struct Data {
  public int Value;
  public bool IsStart;
}

public static IEnumerable<Data> Split(this Region region) {
  yield return new Data() { Value = region.StartLocation, IsStart=true};
  yield return new Data() { Value = region.EndLocation, IsStart=false};
}

. Затем вы можете использовать следующий запрос LINQ, чтобы разбить их и отсортировать.

List<Region> list = GetTheList();
var query = list
  .SelectMany(x =>  x.Split())
  .OrderBy(x => x.Data);
5
ответ дан 17 December 2019 в 04:52
поделиться

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

В качестве примечания, я предполагаю, что вы используете foreach ], а не для . В противном случае вы можете значительно ускорить свой процесс, переключившись на цикл foreach .

foreach(Region r in regionList)
{
    // add your entries using r
}

будет намного быстрее, чем ..

for(int i = 0; i < regionList.Count; i++)
{
    // add your entires using the indexer
}
0
ответ дан 17 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

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