2011-11-21 42 views
3

我怎麼能寫入一個文件內的LINQ查詢?或者調用寫入文件的自定義函數? 我比較圖片的相似度。並且想要檢查在日誌文件中相互比較的文件。因爲有些圖片標記爲相似但不是。C#寫入文件裏面的linq查詢

在此先感謝!

[編輯]

LINQ查詢僅僅是:這裏正在做

IEnumerable<PicInfo> t = from f in lista 
from q in listb 
where (((64 - BitCount(f.visualCharHash^q.visualCharHash)) * 100.0)/64.0 == 100) 

到一個文件中沒有任何文字。簡單地說,因爲我不知道如何去做。谷歌沒有找到我顯示如何做到這一點的任何結果。

但它確實表明寫作LINQ查詢的「

沒有結果「寫入內部LINQ查詢的文件」。

[/編輯]

+2

添加一些代碼,你是試圖做 –

回答

5

好,LINQ是爲查詢只(有沒有副作用,即代碼),但是,與LINQ到對象,它很容易能夠在需要顛覆它來寫你的日誌...例如:

myEnumerable.Select(m => m.SomeProp) 

可改爲:

myEnumerable.Select(m => { 
    myLogger.Log(m.SomeProp); 
    return m.SomeProp; 
}) 

我不會推薦這比調試以外的任何目的。

因此,與您的查詢做到這一點,你需要轉換爲方法鏈:

lista 
    .SelectMany(i => listb, (f, q) => new {f, q}) 
    .Where(x => { 
     var v = (((64 - BitCount(x.f.visualCharHash^x.q.visualCharHash)) 
        * 100.0) 
       /64.0; 
     //logging? 
     return v == 100; 
    }) 
+0

是的,我只需要這個調試。因爲現在我無法看到哪些圖片被相互比較。 – Yustme

1
  HashSet<int> x = new HashSet<int>(); 
      x.Add(1); 
      x.Add(2); 

      string filename = "E:\\foo.txt"; 
      using (TextWriter myStreamWriter = new StreamWriter(filename)) 
      { 
       x.ToList().ForEach(dd => myStreamWriter.WriteLine(dd)); 
      } 

可以轉換成列表,然後使用的ForEach

+0

但這不會是LINQ – sll