C#写入linq查询中的文件
本文关键字:文件 查询 写入 linq | 更新日期: 2023-09-27 18:15:22
如何在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查询内部的文件"没有结果。
[/EDIT]
好吧,LINQ只用于查询(即没有副作用的代码(,然而,使用LINQ to Objects,如果需要,可以很容易地破坏它来编写日志。。。例如:
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;
})
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));
}
您可以转换为List并使用ForEach