[C#] List <string>을 List <int>로 변환하는 방법?

내 질문은이 문제의 일부입니다.

양식에서 ID 모음을받습니다. 키를 가져 와서 정수로 변환하고 DB에서 일치하는 레코드를 선택해야합니다.

[HttpPost]
public ActionResult Report(FormCollection collection)
{
    var listofIDs = collection.AllKeys.ToList();
    // List<string> to List<int>
    List<Dinner> dinners = new List<Dinner>();
    dinners= repository.GetDinners(listofIDs);
    return View(dinners);
}



답변

listofIDs.Select(int.Parse).ToList()


답변

Linq 사용 …

List<string> listofIDs = collection.AllKeys.ToList();
List<int> myStringList = listofIDs.Select(s => int.Parse(s)).ToList();


답변

다음은 유효하지 않은 정수를 필터링 하는 안전한 변형입니다.

List<int> ints = strings
    .Select(s => Int32.TryParse(s, out int n) ? n : (int?)null)
    .Where(n => n.HasValue)
    .Select(n => n.Value)
    .ToList();

outC # 7.0에 도입 된 새로운 변수를 사용합니다 .

이 다른 변형은 null유효하지 않은 int에 대해 항목이 삽입 되는 nullable int 목록을 반환합니다 (즉, 원래 목록 수를 유지함).

List<int?> nullableInts = strings
    .Select(s => Int32.TryParse(s, out int n) ? n : (int?)null)
    .ToList();


답변

Linq 사용하기 :

var intList = stringList.Select(s => Convert.ToInt32(s)).ToList()


답변

TryParse는 무엇입니까?
유효하지 않은 정수를 필터링하는 안전한 LINQ 버전 (C # 6.0 이하) :

List<int>  ints = strings
    .Select(s => { int i; return int.TryParse(s, out i) ? i : (int?)null; })
    .Where(i => i.HasValue)
    .Select(i => i.Value)
    .ToList();

아이디어와 C # 7.0 버전은 Olivier Jacot-Descombes에게 감사드립니다.


답변

나는 그것이 오래된 게시물이라는 것을 알고 있지만 이것이 좋은 추가라고 생각했습니다. List<T>.ConvertAll<TOutput>

List<int> integers = strings.ConvertAll(s => Int32.Parse(s));


답변

이것이 가장 간단한 방법이라고 생각합니다.

var listOfStrings = (new [] { "4", "5", "6" }).ToList();
var listOfInts = listOfStrings.Select<string, int>(q => Convert.ToInt32(q));