2017-04-06 65 views
0

我有方法來保存從表到txt文件的所有值:通查詢結果的方法(LINQ,WPF)

 UserDataDBsDataContext dataContext = new UserDataDBsDataContext(); 
     List<UserData> usersL = (from u in dataContext.UserDatas 
           select u).ToList(); 

     var properties = typeof(UserData).GetProperties(); 
     var userValues = new List<string>(); 

     foreach (var user in usersL) 
     { 
      var values = new List<object>(); 
      foreach (var property in properties) 
      { 
       object value = property.GetValue(user, null); 
       values.Add(value); 
      } 
      userValues.Add(string.Join(",", values)); 
     } 
     File.WriteAllLines("my_data.txt", userValues); 

現在我有兩個查詢和我想要做的完全一樣的,所以我嘗試創建負責循環表值的單獨方法。

環法:

public void loopProp(PropertyInfo[] properites, List<string> addedValues) 
    {   
     foreach (var qrl in ...........) 
     { 
      var values = new List<object>(); 
      foreach (var property in properites) 
      { 
       object value = property.GetValue(qrl, null); 
       values.Add(value); 
      } 
      addedValues.Add(string.Join(",", values)); 
     } 
     File.WriteAllLines("my_passed_data.txt", addedValues); 
    } 

我不知道,如何通過查詢結果(ARUD):

我的代碼

List<AutoRef> ar = (from a in rjdc.AutoRefs 
        select a).ToList(); 
List<UserDataRef> ud = (from u in rjdc.UserDataRefs 
         select u).ToList(); 

      var propertiesAutoRef = typeof(AutoRef).GetProperties(); 
      var autoValues = new List<string>(); 

      var propertiesUserRef = typeof(UserDataRef).GetProperties(); 
      var userValues = new List<string>(); 

      //loopProp(propertiesAutoRef, autoValues); 
      //loopProp(propertiesUserRef, userValues); 
+0

你有什麼問題與'loopProp(propertiesAutoRef,autoValues);'例如? – Pikoh

+0

這是好的,我不知道如何通過「ar」或「ud」:/ – 4est

回答

2

回答你的具體問題。你應該使該方法一般並傳遞源作爲IEnumerable<T>

public void loopProp<T>(IEnumerable<T> source, PropertyInfo[] properites, List<string> addedValues) 
{   
    foreach (var qrl in source) 
    { 
     // ... 
    } 
    File.WriteAllLines("my_passed_data.txt", addedValues); 
} 

用法:

loopProp(ar, propertiesAutoRef, autoValues); 
loopProp(ud, propertiesUserRef, userValues); 

也許你應該通過文件路徑參數以及代替硬編碼的方法裏面的。

+0

感謝伊萬.......你是什麼意思的文件路徑? ( 「my_passed_data.txt」)? – 4est

+0

是的。因爲我假設你不想第二次調用覆蓋同一個文件:) –

+0

可能會被啓動,但無論如何感謝評論@Ivan – 4est