小编Sch*_*ime的帖子

从lambda表达式中检索属性名称

通过lambda表达式传入时,是否有更好的方法来获取属性名称?这是我现在拥有的.

例如.

GetSortingInfo<User>(u => u.UserId);
Run Code Online (Sandbox Code Playgroud)

只有当属性是字符串时,它才能将其作为元素表达式进行处理.因为不是所有属性都是字符串我必须使用对象,但它会返回一个单一表达式.

public static RouteValueDictionary GetInfo<T>(this HtmlHelper html, 
    Expression<Func<T, object>> action) where T : class
{
    var expression = GetMemberInfo(action);
    string name = expression.Member.Name;

    return GetInfo(html, name);
}

private static MemberExpression GetMemberInfo(Expression method)
{
    LambdaExpression lambda = method as LambdaExpression;
    if (lambda == null)
        throw new ArgumentNullException("method");

    MemberExpression memberExpr = null;

    if (lambda.Body.NodeType == ExpressionType.Convert)
    {
        memberExpr = 
            ((UnaryExpression)lambda.Body).Operand as MemberExpression;
    }
    else if (lambda.Body.NodeType == ExpressionType.MemberAccess)
    {
        memberExpr = lambda.Body as MemberExpression;
    }

    if (memberExpr …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda expression-trees

489
推荐指数
14
解决办法
21万
查看次数

访问成员表达式的值

如果我有产品.

var p = new Product { Price = 30 };
Run Code Online (Sandbox Code Playgroud)

我有以下linq查询.

var q = repo.Products().Where(x=>x.Price == p.Price).ToList()
Run Code Online (Sandbox Code Playgroud)

在IQueryable提供程序中,我得到一个包含常量表达式的p.Price的MemberExpression,但是我似乎无法从它获得值"30".

更新 我试过这个,但它似乎不起作用.

var memberExpression = (MemberExpression)GetRootConstantExpression(m);
var fi = (PropertyInfo)memberExpression.Member;
var val = fi.GetValue(((ConstantExpression)memberExpression.Expression).Value, null);
Run Code Online (Sandbox Code Playgroud)

干杯.

c# linq lambda expression-trees

63
推荐指数
5
解决办法
4万
查看次数

如何在PetaPoco中使用SQL WHERE IN构造?

我有一个名为Tags(Id,Name)的数据库表,我想从中选择名称与列表中的名称匹配的表.在SQL中我会使用类似的东西:

Select * from Tags Where Name In ('Name1', 'Name2', 'xxx...)
Run Code Online (Sandbox Code Playgroud)

但是现在在ASP.Net MVC3项目中使用PetaPoco,我很难搞清楚如何正确地完成它.到目前为止,我已经尝试过:

var tagsToFind = new string[] { "SqlServer", "IIS" };
var sql = PetaPoco.Sql.Builder.Select("*").From("Tags").Where("Name in (@0)", tagsToFind);
var result = db.Query<Tag>(sql);
Run Code Online (Sandbox Code Playgroud)

这导致以下SQL,其中使用tagsToFind列表中的第一个名称来匹配表数据而不是所有表名数据.

SELECT * FROM Tags WHERE (Name in (@0)) -> @0 [String] = "SqlServer"
Run Code Online (Sandbox Code Playgroud)

这有点令人沮丧,知道这可能不是那么难......任何帮助都表示赞赏!

更新: 我发现它可以用另一种方式完成

var sql = PetaPoco.Sql.Builder.Append("Select * from tags Where Name IN (@0", tagNames[0]);
foreach (string tagName in tagNames.Where(x => x != tagNames[0])) {
    sql.Append(", @0", tagName);
} …
Run Code Online (Sandbox Code Playgroud)

orm petapoco npoco

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

使用ASP.NET MVC在JS文件中为jQuery设置ajax url

当我对MVC操作进行Ajax调用时,我在View中有我的javascript,而不是在自己的JS文件中.

这样做非常容易:

var xhr = $.ajax({
     url: '<%= Url.Action("DisplayItem","Home") %>/' + el1.siblings("input:hidden").val(),
     data: { ajax: "Y" },
     cache: false,
     success: function(response) { displayMore(response, el1, xhr) }
});
Run Code Online (Sandbox Code Playgroud)

...然后Url.Action()在JS中使用JS内部包含URL 非常容易.如果不对URL进行硬编码,我怎么能移动它做自己的JS文件?

ajax url asp.net-mvc jquery routing

21
推荐指数
3
解决办法
4万
查看次数

复杂模型绑定到列表

我一直在试用MVCContrib的NameValueDeserializer,它将IList作为控制器的参数并将表单及其元素绑定到它,但我只是想知道MVC Beta是否有任何方法可以做到这一点?

我知道你可以绑定一个强类型的对象,但我想绑定一些这些对象的List来进行批量编辑.

例如.

public void Save(IList<Item> items)
{
    foreach (Item i in items)
    {
        //Save item
    }
}
Run Code Online (Sandbox Code Playgroud)

这在MVC Beta中是否可行?提前致谢.

c# asp.net-mvc binding

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

算法找到最佳组合

假设我有100个产品的清单,每个产品都有价格.每个还具有能量(kJ)测量值.

是否有可能找到15种产品的最佳组合,其中10美元以下的能量总和(kJ)最大,使用编程?

我知道C#,但任何语言都没问题.干杯.

更新:为背包问题找到一些示例源代码.有没有人知道在哪里找到一些.谷歌搜索了几个小时,如果可能的话,需要在明天之前进行排序.助教.

algorithm math

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

Oracle中的按位异或

SQL Server中,我一直在使用该^符号,但这在Oracle中似乎不起作用.

我如何OR在Oracle中进行逐位排他?

database oracle stored-procedures bit-manipulation

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

C#Object Constructor - 简写属性语法

几个月前,我读到了一种技术,如果传入的参数与局部变量匹配,那么你可以使用一些简短的语法来设置它们.为了避免这种情况

public string Method(p1, p2, p3)
{
    this.p1 = p1;
    this.p2 = p2;
    this.p3 = p3;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# class object

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

如何对创建新进程的代码进行单元测试?

我该如何测试以下方法?

它是接口的具体类实现的方法.

Process用一个只暴露我需要的方法和属性的接口包装了类.本ProcessWrapper类是具体实现这个接口.

    public void Initiate(IEnumerable<Cow> cows)
    {
        foreach (Cow c in cows)
        {
            c.Process = new ProcessWrapper(c);
            c.Process.Start();
            count++;
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# tdd unit-testing

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

在C#中创建嵌套对象,如C#中的groupby

IList<Customer> Customers =
            flat.GroupBy(cust => new { cust.ReferenceNumber, cust.Name, cust.Address })
                .Select(c => new Customer()
                {
                    ReferenceNumber = c.Key.ReferenceNumber,
                    Name = c.Key.Name,
                    Address = c.Key.Address,
                    Orders = c.Select(o => new Order()
                    {
                        OrderId = o.OrderId,
                        ProductName = o.ProductName,
                        Description = o.Description,
                        Amount = o.Amount
                    }).ToList()
                }).ToList()
Run Code Online (Sandbox Code Playgroud)

是否可以在Javascript中使用平面列表并将其转换为嵌套对象?一个通用的解决方案是??

javascript c# group-by object

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