小编and*_*ndy的帖子

组合多个表达式(Expression <Func <T,bool >>)不使用变量.为什么?

好的家伙,和我一起裸露.我先总结一下,然后再详细说明.

我编写了许多方法(.WhereOr,.WhereAnd),基本上允许我"堆叠"一堆lambda查询,然后将它们应用到集合中.例如,数据集的用法有点像这样(虽然它可以通过使用泛型与任何类一起使用):

使用LINQ TO DATASETS(使用.NET DataSetExtensions)

DataTable Result;

List<Expression<Func<DataRow, bool>> Queries = new List<Expression<Func<DataRow, bool>>();

Queries.Add(dr=> dr.Field<string>("field1") == "somestring");
Queries.Add(dr=> dr.Field<string>("field2") == "somestring"); 
Queries.Add(dr=> dr.Field<string>("field3") == "somestring"); 

Result = GetSomeTable().AsEnumarable().WhereOr(Queries).CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

现在说在上面的例子中,集合中只有一行匹配"somestring",而它位于字段"field2"上.

这意味着Result的计数应为1.

现在,假设我稍微重写上面的代码:

DataTable Result;

List<Expression<Func<DataRow, bool>> Queries = new List<Expression<Func<DataRow, bool>>();

List<string> columns = new string[]{"field1","field2","field3"}.ToList();

string col;

foreach(string c in columns){
    col = c;
    Queries.Add(dr=> dr.Field<string>(col) == "somestring");
}

Result = GetSomeTable().AsEnumarable().WhereOr(Queries).CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

现在,我并不真正理解表达,但对我来说,上面的两个例子都做了完全相同的事情.

除了第一个示例中的"Result"的计数为1,而第二个示例中的"Result"的计数为0.

此外,在第二个示例的List列中,如果将"field2"设置为last,而不是second,则"Result"的计数正确为1.

所以,从这一切来看,我得出了一个结论,但我真的不明白发生了什么,也不知道如何解决它......?我可以更早地"评估"那些表达式......还是其中的一部分?

结论:

基本上,似乎,如果我将文字值发送到那里,比如"field1",它就可以了.但是如果我发送变量,比如"col",它就不起作用,因为这些"表达式"只会在代码中稍后进行评估.

这也可以解释为什么当我将"field2"移动到最后位置时它才起作用.它的工作原理是因为变量"col"最后被分配给"field2",因此当表达式评估"col"等于"field2"时.

好的,那么,有什么方法可以解决这个问题吗?

这是我的WhereOr方法的代码(它是IENumerable的扩展方法):

public static IQueryable<T> WhereOr<T>(this IEnumerable<T> Source, List<Expression<Func<T, …
Run Code Online (Sandbox Code Playgroud)

linq foreach lambda expression-trees

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

用Mono编写的OS X应用程序是否具有与MonoTouch相同的功能?

我的意思是:

  • MonoTouch集成并绑定到Interface Builder和完整的Cocoa Framework.
  • MonoTouch应用程序使用运行时进行编译,因此没有JIT,并且主机操作系统上不需要运行时.

用Mono编写的OS X应用程序可以利用这些MonoTouch功能吗?

macos mono jit xamarin.ios

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

线程如何在对象中工作

嘿伙计们,我在线程方面完全缺乏经验,所以这是我的问题:

线程如何在对象的实例中工作,特别是我正在使用Windows服务.

那么,我的服务基本上是一个对象的实例吗?

所以,假设我的服务中有一个System.Timers.Timer,并且每10秒触发一次ElapsedEventHandler.

假设Timer事件处理程序中的每个操作都需要1分钟才能完成.

每个事件是否由不同的线程处理?

如果是这样,我的对象的属性如何对此作出反应?属性是否跨线程共享?

什么是线程限制?他们跑了吗?如果是这样,当Timer事件触发并且所有线程都被占用时会发生什么?

非常感谢,我特别感兴趣的是如何跨线程共享属性?如果那就是发生了什么.

干杯!

.net multithreading windows-services

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

网站索引服务:lucene和其他选项

只是为我们的网站寻找一些搜索和索引服务,并想知道你们是否可以推荐任何东西?

我们的要求:

  • 该服务可以通过http索引,也可以直接访问我们的数据库.
  • 它必须非常简单易用,并且设置好
  • 提供一个简单的API,以便我们可以以编程方式获得结果并使用它做我们想要的
  • 理想的免费,或非常便宜

到目前为止,我们已经看过Yahoo Boss和Lucene.对那些人有任何优点,缺点或意见吗?

Lucene看起来不错.我们是一个.NET之家,所以LINQ to Luncene看起来很酷,当然还有.NET端口Lucene.NET.但无论如何,它可以是任何技术.

很酷,谢谢你的帮助!

lucene indexing search yahoo-boss-api

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

FileStream.Dispose是否足够?

我正在使用FileStream和StreamReader类,如下所示:

using(FileStream stream = File.Open(filePath,FileMode.Open,FileAccess.Read,FileShare.ReadWrite))
{
    using(var reader = new StreamReader(stream))
    {
        content = reader.ReadToEnd();
    }                    
}
Run Code Online (Sandbox Code Playgroud)

这意味着我正在处理它们.

然而,通过运行另一个应用程序,我发现有一些锁定保留我正在阅读的文件中的一些.

除了Dispose我应该调用Finalize还是Close?

干杯!

更新 - 为什么我认为有一个锁定正在进行:

我有一个写入一些日志文件的服务.

上面的代码来自不同的WCF应用程序,它读取日志.

我还有一个自动部署项目,它停止主服务,备份文件,并添加新版本的服务,并再次启动它.

如果WCF服务正在运行(包含上面的代码),即使主服务已经停止(写入日志的服务),我在运行部署应用程序时也会遇到IO异常.

当WCF服务没有运行时,我没有IO异常,我可以安全地移动文件.

WCF所做的唯一IO就是......所以我假设它在某处保持某种锁定......?

c# file-io dispose locking .net-4.0

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

是否有任何良好的API设计模式,其中WRITES与READS分开?

我正在编写一个由三层组成的相对简单的Web应用程序:

  1. 前端:非常薄的控制器
  2. 业务逻辑:特定于域的服务
  3. 存储:精简存储库类

如上所述,大多数业务逻辑位于服务层2中.

在编写这些类时,我发现自己对WR方法的处理方式与WRITE方法完全不同.

READ类Service中的方法

例如,READ方法中没有过于严格的参数检查.很多时候,对于简单的读取,Service方法只是简单地用一行来实现Repository方法.

服务类中的WRITE方法

然而,使用WRITE方法,我发现自己正在进行更多的参数检查和业务逻辑实现.事实上,在我的服务类中,我依赖于一个Rules类,它只能被我的WRITE方法使用.READS中也有商业逻辑,但WRITES的逻辑更严格.

可能分离READS和WRITES的其他参数

我也觉得在实现服务类并在类中查找方法时,在我的脑海中首先要知道我是否想要READ或WRITE,然后我寻找方法.

我也觉得在类中查找方法时,必须通过以"创建","更新","获取","检索"等等开头的任意方法名称来分隔READS和WRITES.

可能出现问题,分开是个好主意吗?

我想我正在寻找一个久经考验的模式.我可以尝试自己实现它,但我已经觉得可能存在问题,例如过于复杂的设计,或循环引用,重复逻辑,例如.READ类可能依赖于WRITE类,反之亦然.

.net c# design-patterns domain-driven-design

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

如何将数组作为参数列表传递

Ruby的文档将方法签名显示为:

start_with?([prefixes]+) ? true or false
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来像一个数组,但事实并非如此.您可以传递单个字符串或各种字符串作为参数,如下所示:

"hello".start_with?("heaven", "hell")     #=> true
Run Code Online (Sandbox Code Playgroud)

如何将数组作为参数列表传递?以下不起作用:

"hello".start_with?(["heaven", "hell"])
Run Code Online (Sandbox Code Playgroud)

ruby splat

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

如何将动态单选按钮绑定到Ember中的控制器属性

我一直在努力使用单选按钮.我只是想动态创建一些单选按钮,然后将选中的单选按钮绑定到控制器上的属性.

我在这个问题中尝试了答案:https://stackoverflow.com/a/18991426/62653

但是,当您动态创建单选按钮时,它不起作用.

这是接受答案的片段:

 <label>
    {{view Ember.RadioButton name="selectionTest" selectionBinding="isSelected" value="true"}}
    true
 </label>
 <label>
     {{view Ember.RadioButton name="selectionTest" selectionBinding="isSelected" value="false"}}
    false
 </label>
Run Code Online (Sandbox Code Playgroud)

但是当您像这样动态创建单选按钮视图时,它不起作用:

{{#each myModel.someCollection}}
    <label>
        {{view Ember.RadioButton name="selectionTest" selectionBinding="isSelected" value=id}}
        {{id}}
    </label>
{{/each}}
Run Code Online (Sandbox Code Playgroud)

如果您使用循环创建如上所述的单选按钮,则该属性isSelected不会更新.

绑定单选按钮的任何想法或其他解决方案?

javascript ember.js ember-1

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