使用linq从另一个列表中获取的索引值筛选一个列表

时间:2013-11-15 01:39:27

标签: c# linq

我有一个包含字符串

的列表
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的方法,但无法弄清楚如何!

有什么想法吗?

感谢。

2 个答案:

答案 0 :(得分:2)

var result = String.Join(",", valueList
    .Where(vl => fieldList.Select(fl => fl.FieldIndex)
                          .Contains(valueList.IndexOf(vl))))

答案 1 :(得分:0)

解决方案之一

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