我想在linq中使用OR搜索同一列中的多个值。在SQL中,它是这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mainlayout_paint"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/home_paint"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:splitMotionEvents="true"
>
<ImageView
android:id="@+id/imd_pic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
/>
<com.nbagroup.luxuriousframe.UI.CustomViews.PainView
android:id="@+id/surfaceView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
/>
</FrameLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/sideMenuView"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/background"
android:clipChildren="false"
android:clipToPadding="false"
android:scrollbars="horizontal"
android:visibility="invisible" />
<LinearLayout
android:id="@+id/bottombar"
android:layout_width="match_parent"
android:layout_height="70dp"
android:orientation="horizontal"
android:background="@drawable/background"
android:gravity="center_horizontal|bottom"
android:paddingBottom="10dp"
>
<ImageButton
android:id="@+id/btnChangPhoto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.25"
android:background="?android:selectableItemBackground"
android:scaleType="centerInside"
android:src="@drawable/change_img" />
<ImageButton
android:id="@+id/btnChangFrame"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/frames"
android:background="?android:selectableItemBackground"
android:scaleType="centerInside"
android:layout_weight="0.25"
/>
<ImageButton
android:id="@+id/btnPhotoFilter"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/photofilter"
android:background="?android:selectableItemBackground"
android:scaleType="centerInside"
android:layout_weight="0.25"
/>
<ImageButton
android:id="@+id/btnNextPage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/frd_arrow"
android:background="?android:selectableItemBackground"
android:scaleType="centerInside"
android:layout_weight="0.25"
/>
</LinearLayout>
</LinearLayout>
id来自一个id数组,所以我将id传递给一个变量并循环它。数组中的id数量不固定,取决于用户通过选中表中的复选框选择的ID数。因为如果我执行如下操作,它将返回null,因为它在某种程度上将我的查询解释为AND。我如何更改它以便从所有ID获取行(使用OR)?
var query = "Select * from table where id = 1";
query += "OR where id = 2";
答案 0 :(得分:3)
在
但我更喜欢:
&&
如果selectedIdList是一个字符串数组:
request.Where(y => selectedIdList.Contains(y.Id));
答案 1 :(得分:1)
您可以使用LinqKit。 Linqkit提供动态创建谓词的东西
使用packageManager安装linqKit,并使用predicateBuilder构建谓词
Hilbert
OR
var predicate = PredicateBuilder.True<Patient>();
predicate=predicate.And(...)
然后在ur where子句中使用谓词
这样您就可以像动态SQL
那样创建Or(动态)您可以从此处获取更多详细信息 https://www.c-sharpcorner.com/UploadFile/c42694/dynamic-query-in-linq-using-predicate-builder/