2013-11-15 37 views
0

从另一个列表中获得的指标值一个名单我有一个列表,它包含字符串使用过滤器使用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做到这一点,但无法弄清楚如何!

任何想法?

谢谢。

回答

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

级纯的!非常感谢!我讨厌这个事实,我浪费了很多时间试图弄清楚自己,但我想这就是你学习的方式! – Thierry

0

其中一个解决方案

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