【问题标题】:Filter one list using index value obtained from another list using linq使用 linq 从另一个列表获得的索引值过滤一个列表
【发布时间】:2013-11-15 01:39:26
【问题描述】:

我有一个包含字符串的列表

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

valueList.Add("test1");
valueList.Add("test2");
valueList.Add("test3");
valueList.Add("test4");
valueList.Add("test5");
valueList.Add("test6");
valueList.Add("test7");
valueList.Add("test8");

我还有另一个包含对象的列表

List<test> fieldList = new List<test>();
fieldList.Add(new test() { FieldName = "field1", FieldType = 1, FieldIndex = 0 });
fieldList.Add(new test() { FieldName = "field3", FieldType = 1, FieldIndex = 2 });
fieldList.Add(new test() { FieldName = "field5", FieldType = 1, FieldIndex = 4 });

我想使用 fieldList 中包含的对象的 FieldIndex 属性,因此我使用以下方法构建了一个仅包含 fieldIndex 值的列表

var mylist = fieldList.Select(m => m.FieldIndex).ToList();

但现在我想使用fieldindex 的列表从valuelist 中检索值,因此基于上述myList 将包含test1、test3 和test5,理想情况下我想结束每个字符串之间有一个逗号,即string values = "test1,test3,test5"

我确定必须有一种使用 linq 的方法,但不知道怎么做!

有什么想法吗?

谢谢。

【问题讨论】:

    标签: c# linq


    【解决方案1】:
    var result = String.Join(",", valueList
        .Where(vl => fieldList.Select(fl => fl.FieldIndex)
                              .Contains(valueList.IndexOf(vl))))
    

    【讨论】:

    • 纯课!!!非常感谢!我讨厌我浪费了很多时间试图自己弄清楚这一事实,但我想这就是你学习的方式!
    【解决方案2】:

    解决办法之一

     var mylist = fieldList.Select(m => m.FieldIndex).ToList();
     string str = string.Empty;
     mylist.ForEach((i) => str += valueList[i] + ",");
    

    【讨论】:

      猜你喜欢
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      相关资源
      最近更新 更多