列表<逗号分隔的字符串=“”> =&gt;名单<字符串>?

时间:2016-01-15 15:19:44

标签: c# linq

尝试用LINQy方法来做到这一点,但没有任何东西可以来找我。

我有一个List&lt;&gt;对象包含一个以逗号分隔的alpha代码列表的属性:

lst[0].codes = "AA,BB,DD"
lst[1].codes = "AA,DD,EE"
lst[2].codes = "GG,JJ"

我喜欢这些代码的列表,希望以字符串列表的形式出现:

result = AA,BB,DD,EE,GG,JJ

感谢任何指示。

4 个答案:

答案 0 :(得分:21)

使用SelectMany获取所有拆分代码,并使用Distinct不重复这些值。 尝试这样的事情:

var result = lst.SelectMany(x => x.codes.Split(",")).Distinct().ToList();

答案 1 :(得分:6)

您需要使用Split将每个字符串拆分为多个字符串。然后,您需要使用SelectMany将多个序列连接成一个序列,然后您需要使用Distinct来删除重复项。

var result =
    lst
    .SelectMany(x => x.codes.Split(','))
    .Distinct()
    .ToList();

答案 2 :(得分:0)

如果您需要public function actionEdit($id) { $sectionModel = new Section(); if ($menuModel = Menu::findOne($id)) { if ($sectionModel->load(Yii::$app->request->post(), 'Menu')) { $menuModel->name = $sectionModel->name; $menuModel->save(); return $this->redirect(['menu/index']); } return $this->render('edit', [ 'model' => $menuModel ]); } }

string

答案 3 :(得分:-1)

试试这个:

  List<string> list = new List<string>();

  char[] sep = new char[1];
  sep[0] = ',';
  foreach (string item in lst)
  {
       list.AddRange(item.Split(sep));
  }

  list = list.Distinct().ToList();