我试图通过使用带有谓词的Linq来计算出数组在阵列中出现的最大值的次数.Count().但是,我不完全明白该怎么做.从阅读MSDN的例子我认为我理解,但显然不是!
这就是我的想法:
string[] test = { "1", "2", "3", "4", "4" };
string max = test.Max();
Label1.Text = test.Count(p => p == max);
Run Code Online (Sandbox Code Playgroud)
但那没用.所以我尝试将max更改为整数以查看是否可行,但这也不起作用.
这是我在这里的第一篇文章,因为我看到很多很棒的答案,我想我会试一试.
我正在尝试使用XPath来获取HTML文档中的特定元素.以下是基于Google网页的示例:
<html>
<head>
<title>XPath Test</title>
</head>
<body>
<form name='f'>
<table>
<tbody>
<tr>
<td>
<input name='q' type="text" />
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
使用上面的示例(为了寻求帮助而简化),我希望能够找到名称为'q'的输入元素,以及谁是具有名称='f的5个父母的祖先".
例如,如果我在SWAT的语法中执行此操作,SWAT是位于http://ulti-swat.wikispaces.com的开源Web自动化测试库,则语法如下:
| AssertElementExists |表达式|名= Q; parentElement.parentElement.parentElement.parentElement.parentElement.name = F |输入|
我刚开始学习XPath,并试图了解如何将谓词与轴结合起来.是否可以使用XPath执行此类表达式?如果有的话,知识渊博的人请帮忙吗?
我喜欢明智地使用三元条件运算符.在我看来,它非常简洁.
但是,在ruby中,我发现我经常测试谓词方法,它们已经有了自己的问号:
some_method( x.predicate? ? foo : bar )
Run Code Online (Sandbox Code Playgroud)
这两个问号彼此如此接近,我感到震惊.是否存在等效的紧凑且可读的替代方案?
考虑一下:
var propertyinfo = typeof(Customer).GetProperty(sortExpressionStr);
Type orderType = propertyinfo.PropertyType;
Run Code Online (Sandbox Code Playgroud)
现在我想宣布
Func<int,orderType>
Run Code Online (Sandbox Code Playgroud)
我知道它不可能直接ordertype在运行时,但有任何解决方法吗?
这正是我想要做的:
var propertyinfo = typeof(T).GetProperty(sortExpressionStr);
Type orderType = propertyinfo.PropertyType;
var param = Expression.Parameter(typeof(T), "x");
var sortExpression = (Expression.Lambda<Func<T, orderType>>
(Expression.Convert(Expression.Property(param, sortExpressionStr), typeof(orderType)), param));
Run Code Online (Sandbox Code Playgroud)
这一切都是因为我想转换:
Expression<Func<T,object>> to Expression<Func<T,orderType>>
Run Code Online (Sandbox Code Playgroud)
或者如果它不可能那么我想从正确的类型的第一个地方创建它,案例如下:
我在一个方法中,它有一个type(Customer)和我想要通过它订购的类型的属性名称,我想创建一个排序表达式树来将它传递给Orderby(这里).
我试图动态创建以下,但是我在调用扩展方法时遇到问题FirstOrDefault:
using(var context = new Entities())
{
var list = context.Engines.Include("Cars").Select(e => e.Cars.FirstOrDefault()).ToList();
}
Run Code Online (Sandbox Code Playgroud)
我有以下内容
Expression parameter = Expression.Parameter(typeof(Engine), "e");
Expression property = Expression.Property(parameter, "Cars");
Run Code Online (Sandbox Code Playgroud)
{e} {e.Cars}这些都很好,但是当我尝试调用FirstOrDefault方法时遇到问题:
var result = Expression.Call(typeof(Queryable), "FirstOrDefault", new type[] { typeof(Car)}, property);
Run Code Online (Sandbox Code Playgroud)
我想得到
{e.Cars.FirstOrDefault()}但我得到了一个 InvalidOperationException
类型'System.Linq.Queryable'上没有通用方法'FirstOrDefault'与提供的类型参数和参数兼容.如果方法是非泛型的,则不应提供类型参数.
任何帮助将非常感激.
Lambdaj(以及其他一些类似的库)提供了一个having函数,它允许我像这样定义谓词(例如直接来自lambdaj Features页面):
List<Person> oldFriends =
filter(having(on(Person.class).getAge(), greaterThan(30)), meAndMyFriends);
Run Code Online (Sandbox Code Playgroud)
我非常希望能够使用简单的字符串语法定义我的Java谓词对象"age > 30"- 类似于SQL where子句 - 所以上面的过滤器变成了类似的东西:
List<Person> oldFriends =
filter(having(Person.class, "age > 30"), meAndMyFriends);
Run Code Online (Sandbox Code Playgroud)
这样的库是否存在,或者是否有人可以为我自己构建一个查询解析部分推荐一些构建块?我实际上并不介意它创造了什么样的谓词(hamcrest,guava等).
在我的头脑中,我可以想到它支持的许多事情:平等和不平等,自定义和原始类型,和/或/不,括号,LIKE(对于字符串),in(...)enum的解释名称,属性的属性.
这是一个更复杂的谓词的例子:
"salesCount > 10 and (country='UK' or city='New York')
and attitude not in (MENACING, RUDE)
and product.name <> 'Widget' "
Run Code Online (Sandbox Code Playgroud)
(此示例假定谓词应用于的SalesPerson类(比如一个类)具有方法getSalesCount(),getCountry()和getCity(),以及getAttitude()(返回枚举).它还具有属性getProduct,返回带有getName方法的类型.
动机:我们有一个客户端 - 服务器系统,它有多种语言API(目前是Java和C#); 我正在寻找一种语言无关的方式让用户指定一个谓词,该谓词过滤一组对象,其中的确切内容只有服务器进程知道(用Java编写).
我想用下一个subpredicates设置复合谓词:
我读NSCompoundPredicate文档,但不理解不够清晰-这可能在所有使用都+ andPredicateWithSubpredicates:和+ orPredicateWithSubpredicates:他们在一个组合成一个谓语获取请求?
predicate objective-c nspredicate nsfetchedresultscontroller
尝试通过制作通用GET方法来减少代码中的重复.我正在使用OrmLite及其SQLExpressionVisitor更新...目标是传入lambda.我已经看过其他一些我希望会有所帮助的帖子,但到目前为止,没有去......显然问题是我如何在ev.Where声明中尝试评估标准,但解决方案正在逃避我. ..
提前谢谢...... -Lenny
public IQueryable<T> Get<T>(Predicate<T> criteria)
{
using (IDbConnection db = dbConnectionFactory.OpenDbConnection())
{
SqlExpressionVisitor<T> ev = OrmLiteConfig.DialectProvider.ExpressionVisitor<T>();
ev.Where(x => criteria.Invoke(x))
return db.Select(ev).AsQueryable();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误......从范围''引用的'TW.Api.Models.CostCenter'类型的变量'x',但它没有定义
这是一个有效但不通用的代码示例....
public IQueryable<CostCenter> Get(Identity user)
{
using (IDbConnection db = dbConnectionFactory.OpenDbConnection())
{
SqlExpressionVisitor<CostCenter> ev = OrmLiteConfig.DialectProvider.ExpressionVisitor<CostCenter>();
ev.Where(x => x.OrgId == user.OrgId);
ev.Where(x => x.VisibilityStockpointId == user.StockpointId);``
return db.Select(ev).AsQueryable();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我上面引用的模型......
[Alias("CostCenterDetail")]
public class CostCenter
{
public Guid Id { get; set; }
public Guid StockpointId { get; set; }
public virtual Guid? …Run Code Online (Sandbox Code Playgroud) 我有一个问题,我相信你帮我解决了皱纹问题.
我有
List<Predicate<TaskFx>> predicates
Run Code Online (Sandbox Code Playgroud)
我想在这里使用这些谓词
taskFxList.stream().filter(predicates).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
作为一个谓词合并如下:
predicate1.and(predicate2).and...
Run Code Online (Sandbox Code Playgroud)
我有一个表(13列),其中包含一些结果(在JavaFx中)和6个字段,可以通过这些字段中的值在此表中搜索.我只能输入3个字段的值,所以我的
predicates.size() = 3;
Run Code Online (Sandbox Code Playgroud)
问题是如何最好地动态准备一个
Predicate<TaskFx> predicate
Run Code Online (Sandbox Code Playgroud)
包含由x.and(y).和(z)合并的所有谓词
非常感谢您的帮助!
注意:这个问题是不相关的java.util.Optional.
在处理流时,我经常使用这样的逻辑:
Stream<FooBar> stream = myInitialStream();
if (needsFilter1) stream = stream.filter(c -> whatever1());
if (needsFilter2) stream = stream.filter(c -> whatever2());
...
return stream.collect(toList());
Run Code Online (Sandbox Code Playgroud)
我想要实现的是使用链接将上面的代码转换为单个表达式.我发现这更具可读性和直接性.到目前为止,我发现实现这一目标的唯一方法是:
return myInitialStream()
.filter(needsFilter1? c->whatever1() : c->true)
.filter(needsFilter2? c->whatever2() : c->true)
.collect(toList());
Run Code Online (Sandbox Code Playgroud)
尽管如此,这会对那些琐碎的c->truelamdas 进行不必要的调用,这可能会在扩展时产生一些性能成本.
所以我的问题是:是否有更好的方法来生成包含可选过滤的链式流表达式?
更新:也许我没有说清楚,但我的问题是找到单表达式解决方案.如果非要使用多个语句(初始化谓词,例如),我还可以用我的问题基本上不相同的第一个代码块.