목록에 다른 목록이 있는지 확인합니다.
다음과 같은 매개 변수 목록이 있습니다.
public class parameter
{
public string name {get; set;}
public string paramtype {get; set;}
public string source {get; set;}
}
IEnumerable<Parameter> parameters;
그리고 제가 확인하고 싶은 일련의 문자열들.
string[] myStrings = new string[] { "one", "two"};
파라미터 목록을 반복하여 소스 속성이 myStrings 배열과 동일한지 확인하고 싶습니다.나는 각각의 중첩으로 이것을 할 수 있지만, 나는 내가 linq를 가지고 놀면서 더 좋은 방법으로 그것을 하는 방법을 배우고 싶고, 어디 등과 같이 열거 가능한 확장 방법을 좋아하기 때문에 각각의 중첩이 잘못되었다고 느낄 수 있습니다.이를 위한 보다 우아한 선호 linq/lambda/delegete 방법이 있습니까?
감사해요.
중첩된 데이터를 사용할 수 있습니다.Any()
어느 곳에서나 이용할 수 있는 이 수표에 대하여.Enumerable
:
bool hasMatch = myStrings.Any(x => parameters.Any(y => y.source == x));
더 큰 컬렉션에서 더 빠른 성능을 발휘하는 것은 프로젝트를 수행하는 것입니다.parameters
로.source
그런 다음 사용합니다.Intersect
내부적으로 a를 사용자HashSet<T>
따라서 첫 번째 접근법(네스트된 두 루프에 해당)에 대한 O(n^2) 대신 O(n)에서 검사를 수행할 수 있습니다.
bool hasMatch = parameters.Select(x => x.source)
.Intersect(myStrings)
.Any();
또한 C# 스타일 지침을 준수하도록 클래스 이름과 속성 이름을 대문자로 표시해야 합니다.
다음은 다른 목록에 일치 요소가 있는지 확인하는 샘플입니다.
List<int> nums1 = new List<int> { 2, 4, 6, 8, 10 };
List<int> nums2 = new List<int> { 1, 3, 6, 9, 12};
if (nums1.Any(x => nums2.Any(y => y == x)))
{
Console.WriteLine("There are equal elements");
}
else
{
Console.WriteLine("No Match Found!");
}
list1.Select(l1 => l1.Id).Intersect(list2.Select(l2 => l2.Id)).ToList();
var list1 = await _service1.GetAll();
var list2 = await _service2.GetAll();
// Create a list of Ids from list1
var list1_Ids = list1.Select(l => l.Id).ToList();
// filter list2 according to list1 Ids
var list2 = list2.Where(l => list1_Ids.Contains(l.Id)).ToList();
목록이 너무 크고 lamda 식을 사용하면 가져오는 데 시간이 오래 걸립니다. 이 경우 linq를 사용하여 매개 변수 목록을 가져오는 것이 좋습니다.
var items = (from x in parameters
join y in myStrings on x.Source equals y
select x)
.ToList();
언급URL : https://stackoverflow.com/questions/11092930/check-if-listt-contains-any-of-another-list
'it-source' 카테고리의 다른 글
Heroku "psql: FATAL: 나머지 연결 슬롯은 복제되지 않은 슈퍼 사용자 연결을 위해 예약되었습니다." (0) | 2023.05.06 |
---|---|
INOTIFY 구현변경된 속성 - 더 나은 방법이 있습니까? (0) | 2023.05.06 |
문자열에서 클래스 인스턴스 만들기 (0) | 2023.05.06 |
특성 오류: 'module' 개체에 'urlopen' 특성이 없습니다. (0) | 2023.05.06 |
집계하는 동안 MongoDB에 $second에 다른 if가 있습니까? (0) | 2023.05.06 |