반응형
LINQ : 개체에 목록의 항목이없는 위치 선택
나는 여기에서 LINQ 구문으로 어려움을 겪고 있습니다. 다른 곳에서는 내가 찾고있는 것을 정확히 찾을 수 없습니다.
좋아, 내가 이걸 가지고 있다고하자 :
public class Bar
{
public int BarId { get; set; }
}
public class Foo
{
public List<Bar> BarList { get; set; }
}
List<Foo> fooBunch = GetABunchOfFoos(); //let's just assume I'm getting more than one
List<Foo> fooSelect = new List<Foo>;
List<Bar> filterBars = GetAFewBars(); //assume I'm getting like 2 or 3
fooSelect = (from f in fooBunch
where !(from b in f.BarList select b.BarId).Contains(ITEM FROM filterBars.BarId)
select f).ToList();
간단히 말해서 LINQ를 사용하여 다른 목록의 개체를 기반으로 개체 목록을 필터링하고 싶습니다. 이해가 되길 바랍니다. 포함 부분에서 방금 길을 잃은 것 같습니다 ... 어떻게 쓰는지 모르겠습니다.
일반적으로 "Except"확장자를 찾습니다.
var rejectStatus = GenerateRejectStatuses();
var fullList = GenerateFullList();
var rejectList = fullList.Where(i => rejectStatus.Contains(i.Status));
var filteredList = fullList.Except(rejectList);
이 예제에서 GenerateRegectStatuses ()는 거부하려는 상태 목록이어야합니다 (또는 예제를 기반으로보다 구체적인 용어 List<int>
로 ID의 a ).
원하지 않는 id의 더 구체적인 컬렉션에 이것을 덤프하십시오.
var notTheseBarIds = filterBars.Select(fb => fb.BarId);
그런 다음 이것을 시도하십시오.
fooSelect = (from f in fooBunch
where !notTheseBarIds.Contains(f.BarId)
select f).ToList();
아니면 이거:
fooSelect = fooBunch.Where(f => !notTheseBarIds.Contains(f.BarId)).ToList();
나는 이것을 시도하지 않았으므로 나는 아무것도 보장하지 않습니다.
foreach Bar f in filterBars
{
search(f)
}
Foo search(Bar b)
{
fooSelect = (from f in fooBunch
where !(from b in f.BarList select b.BarId).Contains(b.ID)
select f).ToList();
return fooSelect;
}
이 간단한 LINQ를 사용해보십시오.
//For a file list/array
var files = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories);
//simply use Where ! x.Contains
var notContain = files.Where(x => ! x.Contains(@"\$RECYCLE.BIN\")).ToList();
//Or use Except()
var containing = files.Where(x => x.Contains(@"\$RECYCLE.BIN\")).ToList();
notContain = files.Except(containing).ToList();
반응형
'IT박스' 카테고리의 다른 글
Java Rounding Double 문제를 해결하는 방법 (0) | 2020.10.23 |
---|---|
텍스트 검색 후 Vim의 하이라이트 제거 (0) | 2020.10.23 |
JSP 전달과 리디렉션의 차이점 (0) | 2020.10.23 |
패딩을 사용하여 ListView의 스크롤 막대 위치 변경 (0) | 2020.10.23 |
Vim에서 선택한 줄을 클립 보드에 복사하는 방법 (0) | 2020.10.23 |