[SQL] 는 SQL IN 연산자에 LINQ 상응하는 무엇입니까
SQL는 SQL IN 연산자에 LINQ 상응하는 무엇입니까
LINQ I으로 연속하는 값이 배열에 존재하는지 확인한다. SQL 쿼리의 등가 :
WHERE ID IN (2,3,4,5)
내가 어떻게 해?
해결법
-
==============================
1..Contains
.Contains
var resultset = from x in collection where new[] {2,3,4,5}.Contains(x) select x
물론, 당신의 간단한 문제, 당신이 뭔가를 같이 할 수 :
var resultset = from x in collection where x >= 2 && x <= 5 select x
-
==============================
2.IEnumerable.Contains과 SQL에서의 동등한를 수행합니다 ().
IEnumerable.Contains과 SQL에서의 동등한를 수행합니다 ().
var idlist = new int[] { 2, 3, 4, 5 }; var result = from x in source where idlist.Contains(x.Id) select x;
-
==============================
3.
db.SomeTable.Where(x => new[] {2,3,4,5}.Contains(x));
또는
from x in db.SomeTable where new[] {2,3,4,5}.Contains(x)
-
==============================
4.교차되지 않는 한 관련은 조금 더의 간결하고 아마 너무 조금 빠를 것이다.
교차되지 않는 한 관련은 조금 더의 간결하고 아마 너무 조금 빠를 것이다.
에
collection.Intersect(new[] {2,3,4,5});
NOT IN
collection.Except(new[] {2,3,4,5});
또는
IN의 메서드 구문
collection.Where(x => new[] {2,3,4,5}.Contains(x));
및 NOT IN
collection.Where(x => !(new[] {2,3,4,5}.Contains(x)));
-
==============================
5.를 IEnumerable
.Contains (T) 문은 당신이 찾고있는 무엇을해야한다. 를 IEnumerable
.Contains (T) 문은 당신이 찾고있는 무엇을해야한다. -
==============================
6..Contains을 사용하여 매우 기본적인 예 ()
.Contains을 사용하여 매우 기본적인 예 ()
List<int> list = new List<int>(); for (int k = 1; k < 10; k++) { list.Add(k); } int[] conditionList = new int[]{2,3,4}; var a = (from test in list where conditionList.Contains(test) select test);
-
==============================
7.당신은 도움-방법을 쓸 수 있습니다 :
당신은 도움-방법을 쓸 수 있습니다 :
public bool Contains(int x, params int[] set) { return set.Contains(x); }
짧은 코드를 사용 :
var resultset = from x in collection where Contains(x, 2, 3, 4, 5) select x;
-
==============================
8.이 기능은 기본 요소에 대해 사용이 포함 된 경우 위의 상황은 작동하지만 당신은 객체 (예를 들어, myListOrArrayOfObjs.Contains (efObj))을 어떻게 처리하는 경우?
이 기능은 기본 요소에 대해 사용이 포함 된 경우 위의 상황은 작동하지만 당신은 객체 (예를 들어, myListOrArrayOfObjs.Contains (efObj))을 어떻게 처리하는 경우?
나는 해결책을 발견! 문자열로 efObj 변환, 그게 전부는 (당신은 거의 당신의 OBJ의 CSV 표현으로 생각할 수) 각 필드에 대해 _로 구분
등의 예는 다음과 같이 보일 수 있습니다 :
var reqAssetsDataStringRep = new List<string>(); foreach (var ra in onDemandQueueJobRequest.RequestedAssets) { reqAssetsDataStringRep.Add(ra.RequestedAssetId + "_" + ra.ImageId); } var requestedAssets = await (from reqAsset in DbContext.RequestedAssets join image in DbContext.Images on reqAsset.ImageId equals image.Id where reqAssetsDataStringRep.Contains(reqAsset.Id + "_" + image.Id) select reqAsset ).ToListAsync();
-
==============================
9.다음은 값 목록에서 값을 검색하는 데 사용할 수있는 일반적인 확장 방법이다 :
다음은 값 목록에서 값을 검색하는 데 사용할 수있는 일반적인 확장 방법이다 :
public static bool In<T>(this T searchValue, params T[] valuesToSearch) { if (valuesToSearch == null) return false; for (int i = 0; i < valuesToSearch.Length; i++) if (searchValue.Equals(valuesToSearch[i])) return true; return false; }
이것은로 사용할 수 있습니다 :
int i = 5; i.In(45, 44, 5, 234); // Returns true string s = "test"; s.In("aa", "b", "c"); // Returns false
이 조건문에 편리합니다.
from https://stackoverflow.com/questions/2334327/what-is-the-linq-equivalent-to-the-sql-in-operator by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 서버에서와 연합 ORDER를 결합 (0) | 2020.06.28 |
---|---|
[SQL] 외부 조인 왼쪽과 같은 조인 남아 있습니까? [복제] (0) | 2020.06.28 |
[SQL] SQL Server 2005의 VARBINARY 필드의 크기 (0) | 2020.06.28 |
[SQL] MySQL의 합계 () 여러 열 (0) | 2020.06.28 |
[SQL] DISTINCT SELECT가 지정된 경우 ORDER BY 항목이 SELECT 목록에 나타나야합니다 (0) | 2020.06.28 |