小编Ama*_*son的帖子

如何使用多个嵌套的“ands”和“ors”创建 linq 谓词

我正在尝试使用http://www.albahari.com/nutshell/predicatebuilder.aspx 中的PredicateBuilder 在运行时动态创建 linq 表达式。

我目前有一个方法,它接受一个标准对象列表,然后将它们解析成多个谓词,就像这篇文章中描述的那样。

所以目前,我的代码支持以下场景:

WHERE 
    ((a == <val1>) AND (b == <val2>) AND (c == <val3>))
OR
    ((a == <val4>) AND (b == <val2>) AND (c == <val3>))
Run Code Online (Sandbox Code Playgroud)

但我需要它像这样工作:

WHERE 
    ((a == <val1> OR a == <val4>) AND (b == <val2>) AND (c == <val3>))
OR
    ((a == <val7>) AND (b == <val5>) AND (c == <val6>))
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点,以便我可以将两个“OR”“组合”在一起,以便逻辑正确流动?我不想要“a OR a AND b AND c”,我需要“(a OR a) AND b and C”。

linq expression-trees predicatebuilder

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

如何在不使用查询中的distinct的情况下获得相同的结果

我有一个表格,如下所示:

[ID, Name]
1, Bob
1, Joe
1, Joe
1, Bob
Run Code Online (Sandbox Code Playgroud)

我想检索一个记录列表,显示具有相同ID的记录之间的关系.例如,我想从我的查询中得到以下结果集:

Bob, Joe
Joe, Bob
Bob, Bob
Joe, Joe
Run Code Online (Sandbox Code Playgroud)

这向我展示了表中每个项目的"from"和"to".

我可以使用以下查询获得此结果:

SELECT DISTINCT [NAME] 
FROM TABLE A
INNER JOIN TABLE B ON A.ID = B.ID
Run Code Online (Sandbox Code Playgroud)

反正我有没有在select语句中使用"distinct"来实现相同的结果集?如果我不包括distinct,我会得到16条记录,而不是4条记录.

sql distinct

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

实体框架因大型数据集而变慢

我正在使用实体框架来检索大型数据集.

数据集集具有父/子关系,我需要在父节点的同时恢复子信息.

我发现的是,EF最初发送一个查询以获取父对象列表,然后遍历每个父对象并向DB查询子信息.

因此,如果我有1000个父对象,我最终会对DB进行总共1001次调用(每个父对象一次,加上获取父项列表的原始查询).

无论如何都要使EF查询这是一种更有效的方式吗?就像是:

SELECT * FROM CHILD_OBJECT_TABLE WHERE PARENTID IN (LIST OF PARENT_IDS HERE)
Run Code Online (Sandbox Code Playgroud)

sql performance entity-framework

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

这个linq表达式创建有什么问题(使用contains)

我试图用contains运算符动态创建一个linq表达式.

在阅读了与此主题相关的几篇帖子后,我提出了以下代码,允许我执行"包含"评估:

internal static Expression<Func<TEntity, bool>> StringContains<TEntity>(string propertyName, string subString)
{
    MethodInfo contains = typeof(JsonLinqParser_Paser).GetMethod("Like");
    var param = Expression.Parameter(typeof(TEntity));
    var body = Expression.Call(contains, Expression.Property(param, propertyName), Expression.Constant(subString, typeof(string)));

    var lambda = Expression.Lambda<Func<TEntity, bool>>(body, param);

    return lambda;
}
public static bool Like(string a, string b)
{
    return a.Contains(b);
}
Run Code Online (Sandbox Code Playgroud)

这就是这样称呼的:

var expression = Expression.Lambda<Func<TEntity, bool>>(StringContains<TEntity>("FIPSCO_STR", _myStringValue), param);
Run Code Online (Sandbox Code Playgroud)

但是,在运行时,我收到如下错误:

类型'System.Func`2 [DAL.BestAvailableFIP,System.Boolean]'的表达式不能用于返回类型'System.Boolean'

其中"DAL.BestAvailableFIP"是"TEntity"类型.

我确信这与我对lambda表达式缺乏了解有关.谁能告诉我我做错了什么?

c# lambda linq-expressions

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

Raven DB的文件系统是否已加密?

我只是想确定Raven DB使用的文件系统上的文件是否加密?有人可以直接打开文件系统上的文件并直接将它们从二进制转换为ASCII,还是加密?

我试图说服我们的管理层给RavenDB一个机会,但他们担心安全问题.他们给出的示例是,您不能只打开MS SQL db文件,将其从二进制转换为ASCII,然后读取它.所以我试图验证RavenDB是否也阻止了这种事情?

encryption ravendb

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

寻找一些帮助提高此SQL查询的性能

我不是一个真正的大型TSSQL专家.我们有一个返回近200万条记录的查询.运行需要2.5分钟.我们已经添加了索引,并且削减了一分钟(过去需要3.5分钟才能运行),但2.5分钟仍然太慢.谁能告诉我如何修改此查询以提高其性能?我怀疑在"in"语句中会发生更改,并且计算"LOCATION"值的方式,但我不确定如何去做.

select distinct
A.ptid,
A.ptmgrx,
A.ptmgry,
A.fename,
B.fename XFENAME,
A.rt1 route,
A.pr,
A.mp,
A.rdbranch,
A.gs grade,
A.cs,
A.csmp,
A.cspath,
(select distinct twpname from tamc.dbo.fipsmdot where fipscode = A.fmcdl) + '; ' +
(select distinct county from tamc.dbo.fipsmdot where fipsco = A.countyl) + ' County, ' +
(select distinct twpname from tamc.dbo.fipsmdot where fipscode = A.fmcdr) + '; ' +
(select distinct county from tamc.dbo.fipsmdot where fipsco = A.countyr) + ' County' LOCATION
from intersectionApproaches A INNER JOIN intersectionApproaches B ON …
Run Code Online (Sandbox Code Playgroud)

sql performance sql-server-2008

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

动态指定实体框架查询的"包含"

我试图将List<string>一个方法传递给它,并使用它来创建一个在实体框架查询中使用的include语句列表.

例如:

List<string> myIncludes = new List<string>();
myIncludes.Add("myObject.FirstRelatedObject");
myIncludes.Add("myObject.SecondRelatedObject");
Run Code Online (Sandbox Code Playgroud)

我想使用这个列表来获得类似下面的内容:dyamically:

var myQry = objectContext.object.Include(myIncludes[0]).Include(myIncludes[1]);
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我使用predicateBuilder来生成语句的"where"部分,但我认为这与"Include"部分不同.

c# entity-framework predicate

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

在另一个函数中调用javascript函数时,是否同步执行?

在以下代码中:

function doStuffA() {
 // DO SOME THINGS

 doStuffB();

 // DO SOME MORE THINGS
}
function doStuffB() {
// DO B THINGS
}
doStuffA();
Run Code Online (Sandbox Code Playgroud)

代码执行的顺序是什么?

是吗:

1. DO SOME THINGS
2. DO B THINGS
3. DO SOME MORE THINGS
Run Code Online (Sandbox Code Playgroud)

要么:

1. DO SOME THINGS
2. DO B THINGS & DO SOME MORE THINGS - AT THE SAME TIME
Run Code Online (Sandbox Code Playgroud)

javascript

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