相关疑难解决方法(0)

LINQ WHERE与OR

我使用LINQ来创建我的where子句,如下所示:

var query = from x in context.Xs
            select x;

if (y == ...)
{
    query = query.Where(x => x.Y == 1);
}
Run Code Online (Sandbox Code Playgroud)

我有很多这些"if .... where"语句.我遇到的问题是,所有这些都加入了使用AND的子句,但我需要所有where子句使用OR.是否有一种简单的方法将此代码移植到OR代码中?或者甚至用OR做出最简单的方法是什么?

谢谢.

c# linq where-clause

11
推荐指数
2
解决办法
9486
查看次数

将IQueryable <T> Where()扩展为OR而不是AND关系

我正在使用我自己的IQueryable <>扩展方法来创建可链接查询,例如FindAll().FindInZip(12345).NameStartsWith("XYZ").OrderByHowIWantIt()等然后在延迟执行时创建基于我的单个查询扩展方法链.

但问题是,扩展链中的所有位置(FindXYZ,FindInZip等)将始终组合为AND,这意味着我无法做到这样的事情:

FindAll().FirstNameStartsWith("X").OrLastNameStartsWith("Z")因为我不知道如何在一个单独的Where方法中注入OR.

知道如何解决这个问题吗?


额外; 到目前为止,我理解如何将表达式链接为或者如果我将它们包装起来(例如CompileAsOr(FirstNameStartsWith("A").LastNameStartsWith("Z").OrderBy(..))

我想要做的虽然稍微复杂一点(并且PredicateBuilder在这里没有帮助......)因为我希望以后的IQueryable能够基本上访问先前建立的Where条件,而不必将它们包装起来以创建Or之间他们.

当每个扩展方法返回IQueryable <>时,我理解它应该知道某个地方的查询条件的当前状态,这使我相信应该有一些自动化的方法或在所有先前的Where条件中创建Or而不必包装你想要什么或者.

c# iqueryable

8
推荐指数
2
解决办法
4962
查看次数

如何在实体框架中的where子句中链接替代条件

我正在尝试将以下查询重写为单独的语句:

var sql = Repository.Products.AsQueryable();

sql = sql.Where(x => x.Name == "aaaaa" || x.Name == "bbbbb");
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

sql = sql.Where(x => x.Name == "aaaaa");
sql = sql.Where(x => x.Name == "bbbbb");
Run Code Online (Sandbox Code Playgroud)

那么结果查询等于:

sql = sql.Where(x => x.Name == "aaaaa" && x.Name == "bbbbb");
Run Code Online (Sandbox Code Playgroud)

有没有想法如何以正确的方式做到这一点?

.net c# linq-to-entities entity-framework

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

ld:未找到框架 Flutter

当我在 iOS 模拟器上为 iOS 构建 flutter 项目时,它给了我一个错误

ld: framework not found Flutter
Run Code Online (Sandbox Code Playgroud)

并且构建失败。

这是我尝试从 xcode 构建 flutter 项目时的错误消息:

 export IPHONEOS_DEPLOYMENT_TARGET=9.0
 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang \
     -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk \
     -L/Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator \
     -L/Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator/Stripe \
     -L/Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator/shared_preferences \
     -L/Users/abhijeetnigoskar/Desktop/flutter_workspace/zenspace_pro/ios/Pods/Stripe/InternalFrameworks \
     -L/Users/abhijeetnigoskar/Desktop/flutter_workspace/zenspace_pro/ios/Flutter \
     -F/Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Products/Debug-iphonesimulator \
     -F/Users/abhijeetnigoskar/Desktop/flutter_workspace/zenspace_pro/ios/Pods/../.symlinks/flutter/ios \
     -F/Users/abhijeetnigoskar/Desktop/flutter_workspace/zenspace_pro/ios/Flutter \
     -filelist /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Intermediates.noindex/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner.LinkFileList \
     -Xlinker -rpath -Xlinker @executable_path/Frameworks \
     -mios-simulator-version-min=9.0 -dead_strip -Xlinker -object_path_lto \
     -Xlinker /Users/abhijeetnigoskar/Library/Developer/Xcode/DerivedData/Runner-axtptzubiqvjnbhgcbxfykotbmup/Build/Intermediates.noindex/Runner.build/Debug-iphonesimulator/Runner.build/Objects-normal/x86_64/Runner_lto.o \
     -Xlinker -export_dynamic -Xlinker -no_deduplicate \
     -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc \
     -fobjc-link-runtime -ObjC -lStripe -lStripe3DS2 -lshared_preferences \
     -framework Contacts …
Run Code Online (Sandbox Code Playgroud)

flutter

6
推荐指数
3
解决办法
7244
查看次数

逐步构建OR查询表达式

在LINQ中,可以逐步构建LINQ查询,如下所示:

var context = new AdventureWorksDataContext();
// Step 1
var query = context.Customers.Where(d => d.CustomerType == "Individual");
// Step 2
query = query.Where(d => d.TerritoryID == 3);
Run Code Online (Sandbox Code Playgroud)

上面的查询将产生一个等效的SQL语句,其WHERE子句包含由AND逻辑运算符组合在一起的两个谓词,如下所示:

SELECT * FROM Customers WHERE CustomerType = 'Individual' AND TerritoryID = 3
Run Code Online (Sandbox Code Playgroud)

是否可以构建LINQ查询以生成等效的SQL语句,progressively以便生成的查询具有WHERE子句,其中谓词由OR逻辑运算符组合在一起,如下所示?

SELECT * FROM Customers WHERE CustomerType = 'Individual' OR TerritoryID = 3
Run Code Online (Sandbox Code Playgroud)

.net c# sql linq

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

如何使用LINQ链接OR子句?

我有一个场景,我需要使用LINQ构建一个SQL查询,其中包含可变数量的OR子句.我正在编写一个函数,它将根据一些输入构建查询.函数定义看起来类似于......

function BuildQuery(ICollection<ColumnsThatNeedToBeTrue> columns)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

所以,我给了一个我需要检查的列的集合,并且检查需要使用OR子句.

如果columns数组包含AB,我需要查询来检查列A是否为真或列为B真.

如果columns数组包含A,B并且C,我需要查询并检查AOR BOR C是否为真.

我不知道如何在一个单一内完成这一切Where,因为我不知道如何逐步增加其他||条款.基于输入数组,我不确定如何在下面包含额外的OR检查.

var query = entities.Where(m => m.A == true || m.B == true ...)
Run Code Online (Sandbox Code Playgroud)

我不能链接Where函数,每个函数用于自己的列检查,因为它使用AND子句构建该查询,我需要OR.

有没有办法使用LINQ构建这样的查询?

c# linq

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

C# - 如何在对象列表上执行多个包含过滤器

我有一个数据表,我试图为列实现服务器端过滤.我允许每列查询多个字符串,并尝试确定跨步所有过滤器的最佳方法.下面是表对象的示例,为简单起见,只有2个参数.

//table models from db
public class Parts
{
    public string PartName { get; set; }
    public virtual Series Series { get; set; }
}

public class Series
{
    public string SeriesName { get; set; }
}

//This is what is passed in from the datatable filter query
public class PartsTable
{
    public string PartName { get; set; }

    public string SeriesName { get; set; }
}


public IEnumerable<Parts> PartsTableSearch(PartsTable table)
{
    //Queries come in as comma separated string
    var …
Run Code Online (Sandbox Code Playgroud)

c# linq datatable contains filter

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

使用LINQ获取项目列表,其中项目包含来自另一个列表的项目的一部分

有一个模型列表:

List<string> models = new List<string>
{
    "abcd1234",
    "xycd9999",
    "zzz999z",
    "ros7777"
};
Run Code Online (Sandbox Code Playgroud)

有过滤器清单:

List<string> filterer = new List<string>
    {
        "cd",
        "9999"
    };
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用LINQ来获取包含过滤器项目的所有模型作为其名称的一部分.

对于这个例子:

  1. "abcd1234"和"xycd9999"包含"cd"
  2. "xycd9999"包含"9999"

因此,LINQ操作将返回两个项目的列表:"abcd1234"和"xycd9999".

var filteredList = models
                   .Where(m => m.Contains("/*HERE WILL BE THE FILTERER ITEMS*/"))
                   .Distinct()
                   .ToList(); 
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

c# linq

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