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]

C#写入linq查询中的文件

好吧,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