我有一个很长的Ids(整数)列表,它代表了我数据库中当前的所有项目:
var idList = GetAllIds();
Run Code Online (Sandbox Code Playgroud)
我还有另一个巨大的通用列表,其中包含要添加到数据库的项目:
List<T> itemsToAdd;
Run Code Online (Sandbox Code Playgroud)
现在,我想删除其Id已经在idList中的通用列表中的所有项目.目前idList是一个简单的数组,我减去这样的列表:
itemsToAdd.RemoveAll(e => idList.Contains(e.Id));
Run Code Online (Sandbox Code Playgroud)
我很确定它可以更快,所以我应该为两个集合使用什么数据类型以及减去它们的最有效做法是什么?
谢谢!
我目前正在使用ASP.NET 3.5和C#学习Windows中的命名管道.我写了一个小型服务器程序,它创建了一个命名管道:
using (NamedPipeServerStream pipeStream = new NamedPipeServerStream(pipeName))
{
pipeStream.WaitForConnection();
// do sth.
}
Run Code Online (Sandbox Code Playgroud)
和一个打开管道的客户端应用程序如下:
using (NamedPipeClientStream pipeStream = new NamedPipeClientStream(pipeName))
{
pipeStream.Connect();
// do sth.
}
Run Code Online (Sandbox Code Playgroud)
只要只有一个客户端连接到管道,这就很有效.它既可以读写,也可以写入.如果我尝试连接第二个客户端,代码永远不会超过该行
pipeStream.Connect();
Run Code Online (Sandbox Code Playgroud)
服务器和所有客户端都在同一台计算机上运行.有任何想法吗?
非常感谢你提前!
我有一个相互依赖的RadioButtonComponent和一个RadioButtonGroupDirective:
RadioButtonComponent:
import { RadioButtonGroupDirective } from "./radio-button-group.directive";
...
constructor(@Optional() @Inject(forwardRef(() => RadioButtonGroupDirective)) radiobuttonGroup: RadioButtonGroupDirective, ...) {
Run Code Online (Sandbox Code Playgroud)
RadioButtonGroupDirective:
import { RadioButtonComponent } from "./radio-button.component";
...
@ContentChildren(forwardRef(() => RadioButtonComponent))
private radioButtons: QueryList<RadioButtonComponent>;
Run Code Online (Sandbox Code Playgroud)
使用angular-cli中的最新webpack更新,我在构建时会收到以下警告:
WARNING in Circular dependency detected:
lib\controls\radio-button\radio-button-group.directive.ts -> lib\controls\radio-button\radio-button.component.ts -> lib\controls\radio-button\radio-button-group.directive.ts
WARNING in Circular dependency detected:
lib\controls\radio-button\radio-button.component.ts -> lib\controls\radio-button\radio-button-group.directive.ts -> lib\controls\radio-button\radio-button.component.ts
Run Code Online (Sandbox Code Playgroud)
事实上,代码是有效的,因为我forwardRef()在两种情况下都使用,指定其他类可能尚未加载.但是我该如何解决警告?
通常,我会为两个类中的一个实现一个接口并使用它,但是既不能@Inject也@ContentChildren不能使用接口,对吧?
在我的MVC2 AdminArea中,我想为每个域模型创建一个概述表.我正在使用如下所示的DataAnnotations来获取这些域模型对象的属性:
[DisplayName("MyPropertyName")]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:如果我的视图收到我的域模型的集合,我如何访问DisplayName属性?我需要这个来构建在通常之外定义的表头
<% foreach (var item in Model) { %>
Run Code Online (Sandbox Code Playgroud)
环.在这个循环中,我可以写
<%: Html.LabelFor(c => item.Name) %>
Run Code Online (Sandbox Code Playgroud)
但有没有办法使用项目集合而不是具体实例来访问此信息?
提前致谢!
我有一个基于令牌索引的文档语料库,它提供了一种查询方法.用户手动(!)输入需要解析和评估的查询字符串.然后,语料库应返回与给定查询字符串匹配的所有文档的列表.查询语言具有简单的布尔运算符AND,NOT和OR,它们也可以通过括号进行优先级排序.经过一些研究,我已经使用ANTLR将给定的查询字符串解析为语法树.
例如:查询
"Bill OR (John AND Jim) OR (NOT Simon AND Mike)"
Run Code Online (Sandbox Code Playgroud)
在以下语法树中翻译:
编辑:请参阅Bart Kiers帖子中的正确图表(复制到此处):

树中的所有节点都是简单的字符串,每个节点都知道它的父节点和子节点,但不知道它的兄弟节点.正如您所看到的,ANTLR语法已经规定了操作需要执行的顺序:树底部的那些首先出现.
所以我可能需要做的是重复(?)评估树中的所有操作数.一般来说,我可以使用树中每个叶子的方法Get(字符串术语)对我的语料库进行简单搜索(如"Bill"或"John").Get()返回包含叶子中术语的文档列表.我还可以评估每个叶子的父级以识别可能的NOT运算符,然后该运算符将导致不包含叶子中的术语的文档的结果列表(使用方法Not()而不是Get()).
应该将AND和OR运算符转换为需要两个参数的方法调用:
参数list1和list2包含我在使用Get()或Not()之前收到的文档.
我的问题是:我如何 - 在C#语义和语法上 - 评估所有必要的搜索术语并使用它们以正确的顺序调用正确的运算符方法?直觉上它听起来像递归,但不知何故我无法想象 - 特别是因为并非所有需要调用的方法都具有相同数量的参数.或者是否有其他方法可以实现这一目标?
我最近一直在玩ASP.NET MVC5和新的OWIN认证中间件.我希望我的用户使用他们的Steam帐户和密码登录.用户成功登录后,我只需要Steam帐户ID进行进一步处理.如文档中所述, Steam可以充当OpenId提供程序.
在MVC4中,可以实现自定义的OpenIdClient.在我看来,在MVC5中,OpenIdClient类已被删除,并且使用IAppBuilder类配置了身份验证,该类提供了使用Facebook,Google和其他预定义提供程序登录的方法.
遗憾的是,我无法找到有关将自定义提供程序插入新身份验证系统的任何文档.你能给我任何指示或参考吗?
c# ×3
angular ×1
antlr ×1
asp.net-3.5 ×1
collections ×1
named-pipes ×1
owin ×1
parsing ×1
performance ×1
steam ×1
views ×1