반응형
ListBox.items를 일반 목록으로 변환하는 가장 간결한 방법
C #을 사용하고 .NET Framework 3.5를 대상으로합니다. 나는 코드의 작은 간결하고 효율적인 조각 A의 모든 항목을 복사 할 찾고 있어요 목록 상자 A를 List<String>
(일반 목록 ).
현재 아래 코드와 비슷한 것이 있습니다.
List<String> myOtherList = new List<String>();
// Populate our colCriteria with the selected columns.
foreach (String strCol in lbMyListBox.Items)
{
myOtherList.Add(strCol);
}
물론 작동하지만 일부 새로운 언어 기능을 사용하여 더 나은 방법이 있어야한다는 느낌을받을 수 있습니다. List.ConvertAll 메서드 와 같은 것을 생각하고 있었지만 이것은 ListBox.ObjectCollection 컬렉션이 아닌 일반 목록에만 적용됩니다 .
약간의 LINQ가해야합니다.
var myOtherList = lbMyListBox.Items.Cast<String>().ToList();
물론 캐스트의 Type 매개 변수를 Items 속성에 저장 한 유형으로 수정할 수 있습니다.
다음이 수행합니다 (Linq 사용).
List<string> list = lbMyListBox.Items.OfType<string>().ToList();
OfType의 호출은 문자열이 사용되는 목록 상자의 항목에서 해당 항목 만 보장합니다.
Cast를 사용 하면 항목이 문자열이 아닌 경우 예외가 발생합니다.
이건 어때:
List<string> myOtherList = (from l in lbMyListBox.Items.Cast<ListItem>() select l.Value).ToList();
는 어때:
myOtherList.AddRange(lbMyListBox.Items);
의견과 DavidGouge의 답변을 기반으로 편집하십시오.
myOtherList.AddRange(lbMyListBox.Items.Select(item => ((ListItem)item).Value));
더 이상 필요하지 않습니다. Listbox에서 모든 값의 목록을 얻습니다.
private static List<string> GetAllElements(ListBox chkList)
{
return chkList.Items.Cast<ListItem>().Select(x => x.Value).ToList<string>();
}
반응형
'IT Share you' 카테고리의 다른 글
node.js에서 지원하는 AWS Lambda 함수를 사용하여 SNS 주제에 메시지를 게시 할 수 있습니까? (0) | 2020.12.10 |
---|---|
Docker에서 여러 터미널을 여는 방법은 무엇입니까? (0) | 2020.12.10 |
Python 3.1에서 문자열의 HTML 엔티티를 어떻게 이스케이프 해제합니까? (0) | 2020.12.09 |
변수가 초기화되지 않았을 수 있음 오류 (0) | 2020.12.09 |
Javascript로 2 자리 연도를 얻는 방법은 무엇입니까? (0) | 2020.12.09 |