小编Rya*_*yan的帖子

Lambda表达式在运行时C#中的多个条件

我想知道如何通过输入多个参数来创建表达式树

例:

dataContext.Users.Where(u => u.username == "Username" && u.password == "Password")
Run Code Online (Sandbox Code Playgroud)

目前我所做的代码如下,但是想要更一般地考虑条件是OR还是AND

public Func<TLinqEntity, bool> ANDOnlyParams(string[] paramNames, object[] values)
    {
        List<ParameterExpression> paramList = new List<ParameterExpression>();
        foreach (string param in paramNames)
        {
            paramList.Add(Expression.Parameter(typeof(TLinqEntity), param));
        }

        List<LambdaExpression> lexList = new List<LambdaExpression>();
        for (int i = 0; i < paramNames.Length; i++)
        {
            if (i == 0)
            {
                Expression bodyInner = Expression.Equal(
                                    Expression.Property(
                                        paramList[i], paramNames[i]),
                                        Expression.Constant(values[i]));
                lexList.Add(Expression.Lambda(bodyInner, paramList[i]));
            }
            else
            {
                Expression bodyOuter = Expression.And(
                                    Expression.Equal(
                                    Expression.Property(
                                    paramList[i], paramNames[i]),
                                    Expression.Constant(values[i])),
                                    Expression.Invoke(lexList[i - 1], paramList[i])); …
Run Code Online (Sandbox Code Playgroud)

c# lambda

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

jQuery ajaxStart绑定了唯一元素

我有以下JS代码

<script type="text/javascript">
    $(document).ready(function () {
        $("#innerDiv1").ajaxStart(function () {
            alert($(this).attr("id") + " ajaxStart");
        });

        $("#innerDiv2").ajaxStart(function () {
            alert($(this).attr("id") + " ajaxStart");
        });

        $("#button").click(function () {
            $.post("test.aspx");
        });

        $("#button1").click(function () {
            $.post("test.aspx");
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

我的问题是每当我单击"按钮"或"button1"时,即使ajaxStart处理程序绑定了唯一元素,也会调用ajaxStart事件

我想只调用一个ajaxStart,根据我点击的按钮,这可能吗?

更新中...

在阅读了答案并发现它不可能之后......任何人都可以解释为什么ajaxStart可以绑定一个元素?

谢谢

ajax jquery

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

RSA加密C#

我有一个在C#中进行RSA加密的类,我使用默认的RSACryptoServiceProvider类.但我对以下问题表示担忧; 如果您输入了单词hello并且加密的字符串作为ABCDE返回,如果您对输入问候语执行另一个加密操作,使用RSA的相同键(公共和私有)将输出再次为ABCDE?

提前致谢

c# rsacryptoserviceprovider

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

按字段排序,该字段是实体的导航属性 - Linq to Entity

我有一个场景,我需要在一个列上订购,该列是我的EF模型中的Users实体的导航属性.

实体:用户 - >国家1:n关系

一个简单的SQL查询如下:

SELECT UserId, u.Name, c.Name
FROM users u join countries c on u.CountryId = c.CountryId
ORDER BY c.Name asc;
Run Code Online (Sandbox Code Playgroud)

所以我尝试使用Linq to Entities复制上面的SQL查询,如下所示 - (启用了延迟加载)

entities.users.OrderBy(field => field.country.Name).ToList();
Run Code Online (Sandbox Code Playgroud)

但是这个查询不会返回按照上面的本机SQL查询按名称排序的国家/地区.

但是我继续了一点,做了以下事情:

var enumeratedUsers = entities.users.AsEnumerable();
users = enumeratedUsers.OrderBy(fields => fields.country.Name).ToList();
Run Code Online (Sandbox Code Playgroud)

但是在enumeratedUser对象上排序约50条记录.7秒

有没有更好的方法来省略Enumerable并且不返回匿名类型?

谢谢

编辑

我只是忘了说EF提供者是MySQL而不是MS SQL.事实上,我只是在MS SQL中的复制数据库上尝试了相同的查询,并且查询工作正常,即国家名称正确排序,所以看起来除了从MySQL获取结果集并执行顺序之外别无选择来自可枚举对象的内存

c# linq-to-entities sql-order-by navigation-properties

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