내 질문은이 문제의 일부입니다.
양식에서 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();
out
C # 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));