通过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) 如果我有产品.
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)
干杯.
我有一个名为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) 当我对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文件?
我一直在试用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中是否可行?提前致谢.
假设我有100个产品的清单,每个产品都有价格.每个还具有能量(kJ)测量值.
是否有可能找到15种产品的最佳组合,其中10美元以下的能量总和(kJ)最大,使用编程?
我知道C#,但任何语言都没问题.干杯.
更新:为背包问题找到一些示例源代码.有没有人知道在哪里找到一些.谷歌搜索了几个小时,如果可能的话,需要在明天之前进行排序.助教.
在SQL Server中,我一直在使用该^符号,但这在Oracle中似乎不起作用.
我如何OR在Oracle中进行逐位排他?
几个月前,我读到了一种技术,如果传入的参数与局部变量匹配,那么你可以使用一些简短的语法来设置它们.为了避免这种情况
public string Method(p1, p2, p3)
{
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我该如何测试以下方法?
它是接口的具体类实现的方法.
我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) 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中使用平面列表并将其转换为嵌套对象?一个通用的解决方案是??