小编TH *_*rov的帖子

如何根据多个条件并使用linq从通用列表中删除项目

我有两个列表,一个包含URL,另一个包含所有MIME文件扩展名.我想从第一个列表中删除所有指向此类文件的URL.

示例代码:

List<string> urls = new List<string>();
urls.Add("http://stackoverflow.com/questions/ask");
urls.Add("http://stackoverflow.com/questions/dir/some.pdf");
urls.Add("http://stackoverflow.com/questions/dir/some.doc");

//total items in the second list are 190
List<string> mime = new List<string>();
mime.Add(".pdf"); 
mime.Add(".doc"); 
mime.Add(".dms"); 
mime.Add(".dll"); 
Run Code Online (Sandbox Code Playgroud)

删除多个项目的一种方法是:

List<string> result = urls.Where(x => (!x.EndsWith(".pdf")) && (!x.EndsWith(".doc")) && (!x.EndsWith(".dll"))).ToList();
Run Code Online (Sandbox Code Playgroud)

但是,我的第二个列表中有超过190个扩展.

问题 - 我可以使用单行删除第一个列表中的项目,还是仅使用foreach循环?

c# linq lambda list

14
推荐指数
2
解决办法
2747
查看次数

适合多线程的轻量级无头浏览器

我用 Selenium 编写了几个项目,它完美地满足了我的所有需求,然后我需要一个无头浏览器,并使用 PhantomJS 编写了一个小测试,它工作得很好。然而,PhantomJS 使用了太多内存来启动数百个实例,而这正是我在下一个项目中需要的。

在阅读并重新阅读这个问题和许多其他问题之后: 无头浏览器和抓取 - 解决方案

并进行了大量的在线搜索,我仍然不确定哪种无头浏览器可以满足我的需求。

我需要的:

  • JavaScript、Ajax、HTML 5 支持
  • 代理支持
  • 内存和 CPU 使用率足够低,因此我可以同时运行至少 100 个实例
  • 在 Windows 机器上运行

我的希望是:

  • C# .Net 包装器(不是破坏交易的因素)
  • 无需安装
  • 良好的文档
  • 基于Webkit

目前,ZombieJs 和 HTMLUnit 是我想要测试的两个解决方案,但在我投入大量时间之前,我希望有人已经完成了类似的项目,并且可以为我指明正确的方向。

browser multithreading headless htmlunit

5
推荐指数
0
解决办法
1618
查看次数

Casperjs - 有没有办法等待n秒?

只是为了澄清,我不想等待一个条件,只需暂停n秒.这是我的代码,但是id不能按我预期的方式工作,我怀疑"等待"是异步的.我希望更改代码,以便打印1,等待5秒,打印2,然后打印3.现在它打印1,打印3,然后等待5秒并打印2.

var casper = require('casper').create();

var x = require('casper').selectXPath;
var fs = require('fs');
var parsedFile = "pfile.txt";

casper.start();

function wait5seconds() {
   casper.wait(5000, function() {
        this.echo('2');
   });
}

casper.then(function() {
  this.echo('1');
  wait5seconds();  
  this.echo('3');
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

javascript casperjs

1
推荐指数
1
解决办法
7859
查看次数

标签 统计

browser ×1

c# ×1

casperjs ×1

headless ×1

htmlunit ×1

javascript ×1

lambda ×1

linq ×1

list ×1

multithreading ×1