2013-11-15 65 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] + ",");