加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用LINQ将select中两列的结果合并为一个数组?

发布时间:2020-12-15 08:32:29 所属栏目:百科 来源:网络整理
导读:基本上我想要选择两个字符串列并将它们全部放入一个字符串数组中.现在我必须做两个选择并结合结果.这不是什么大不了的事,我觉得它看起来很尴尬.有关如何使用一个 linq语句实现相同目标的任何建议?这是一个我正在使用的测试用例: [TestFixture] public clas
基本上我想要选择两个字符串列并将它们全部放入一个字符串数组中.现在我必须做两个选择并结合结果.这不是什么大不了的事,我觉得它看起来很尴尬.有关如何使用一个 linq语句实现相同目标的任何建议?这是一个我正在使用的测试用例:
[TestFixture]
  public class test {

    public class Values {
      public string Present { get; set; }
      public string Previous { get; set; }
      public bool Flag { get; set; }
    }

    [Test]
    public void test1() {

      var list = new List<Values> {
        new Values { Present = "present1",Previous = "previous1",Flag = false },new Values { Present = "present2",Previous = "previous2",new Values { Present = "present3",Previous = "previous3",Flag = true },new Values { Present = "present4",Previous = "previous4",Flag = true }
      };


      var r1 = list.Where(c => c.Flag).Select(c => c.Present);
      var r2 = list.Where(c => c.Flag).Select(c => c.Previous);
      var combined = r1.Concat(r2);

      Assert.AreEqual(4,combined.Count());
    }
  }

解决方法

使用SelectMany的另一种解决方案(它保留重复项):
var combined = list.Where(c => c.Flag)
                   .SelectMany(c => new[] { c.Present,c.Previous });
Assert.AreEqual(4,combined.Count());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读