小编san*_*247的帖子

LINQ中的动态where子句 - 在运行时可用列名

免责声明:我使用System.Linq.Expressions中的表达式解决了这个问题,但我仍然在寻找更好/更简单的方法.

考虑以下情况:

var query = 
    from c in db.Customers
    where (c.ContactFirstName.Contains("BlackListed") || 
           c.ContactLastName.Contains("BlackListed")  ||
           c.Address.Contains("BlackListed"))
    select c;
Run Code Online (Sandbox Code Playgroud)

需要根据列入黑名单的术语检查的列/属性仅在运行时可用.如何生成这个动态where子句?

另一个复杂因素是Queryable集合(上面的db.Customers)被输入到'Customer'基类的Queryable中(比如'Person'),因此不能选择编写c.Address.

.net dynamic-linq linq-to-sql

9
推荐指数
2
解决办法
3万
查看次数

Ninject:按类型_and_注册名称/标识符解析对象

我正在寻找一种方法来使用Ninject做这样的事情:

// Sample from the Unity application block
IMyService result = myContainer.Resolve<IMyService>("Data"); 
Run Code Online (Sandbox Code Playgroud)

(来自http://msdn.microsoft.com/en-us/library/cc440957.aspx)

可能吗?

c# ninject inversion-of-control

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

C#类型推断:在不应该的地方失败?

请注意以下代码.违规行已被注释掉.

interface I<R> { }

class C : I<int> { }

class Program
{
    private static void function<T, R>(T t) where T : class, I<R>
    {
    }

    static void Main(string[] args)
    {
        // function(new C()); // wont compile
        function<C, int>(new C());
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为类型推断应该找出类型,因为参数T提供了第一种类型,而I<R>提供了第二种类型.

有没有办法重新设计功能,以便调用者可能不必指定类型?

.net c# generics type-inference

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

numpy.digitize返回超出范围的值?

我使用以下代码将数组数字化为16个bin:

numpy.digitize(array, bins=numpy.histogram(array, bins=16)[1])
Run Code Online (Sandbox Code Playgroud)

我希望输出在[1,16]范围内,因为有16个分档.但是,返回数组中的一个值是17.如何解释?

python statistics numpy binning

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

LINQ性能 - 延迟v/s立即执行

我已经看到,如果LINQ to Objects查询被强制立即执行使用.ToArray(),但有时不能理解为什么,则可以显着提高它们的性能.例如,在下面的示例中,函数的执行Deferred()比函数慢得多Immediate(),并且随着值的增加呈指数级增长limit(也许它在两个函数中都是指数函数,但是执行时间Immediate()太短,我无法明确地说).

public void Deferred()
{
    var all = Range(limit);
    var even = from e in EvenRange(limit) where all.Contains(e) select e;
    var odd = from o in OddRange(limit) where !even.Contains(o) select o;

    var query = from q in odd select q;

    foreach(var i in query) { var j = i+1; }
}

public void Immediate()
{
    var all = Range(limit);
    var even = (from e in EvenRange(limit) where all.Contains(e) …
Run Code Online (Sandbox Code Playgroud)

.net linq performance

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

使用带SSIS包的版本控制(保存"敏感"数据)

我们是一个团队,致力于使用版本控制(SVN)共享的一堆SSIS包.我们有三种方法可以在这些包中保存敏感数据:

  • 根本不存储它们
  • 用户密钥存储它们
  • 用密码存储它们

但是,在测试由其他开发人员保存和提交的包时,这些选项中的每一个都是不方便的.对于每个此类程序包,无论敏感数据的持久性如何,都必须更新凭据.

有没有更好的方法来协作SSIS包?

version-control ssis bids

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