나는 다음과 같은 목록을했습니다 :linq를 사용하여 C#의 목록에서 가장 근접하고 작은 값을 찾으십니까?
public List<Dictionary<int, int>> blanks { get; set; }
이 일부 인덱스 값을 유지 : 또한
또한라는 변수 X에서 X는 임의의 값을 취할 수있다. X에 가장 가깝고 더 작은 'Key'값을 찾고 싶습니다.이 코드 블록을 통해 가장 가까운 값만 가져올 수 있습니다. 그러나, 더 작은 것을 취할 수는 없습니다.
var diffs = kaynaklarArray[l].blanks.SelectMany((item, index) => item.Select(entry => new { Index = index, Key = entry.Key, Diff = Math.Abs(entry.Key - X) })).OrderBy(item => item.Diff);
var closestDiff = diffs.First();
var key = closestDiff.Key;
var value = (kaynaklarArray[l].blanks[closestDiff.Index])[closestDiff.Key];
X 1000의 경우, 내가 공백 지수 먹고 싶어 : 1 키 : 2 및 키 :이 X에 비해 작기 때문에, (750)는 그러나이 코드 블록은 인덱스 소요 (1200) 내가 원하지 않는 그것.
어떻게하면됩니까? 또한
나는 목록과 같이도했습니다 :
List<List<int[]>> lastList = new List<List<int[]>>();
이 시간, 내가 먼저 목록의 인덱스와 두 번째 목록의 인덱스를 먹고 싶어. 예를 들어, X가 800 인 경우 0과 0 (인덱스 0)을 취하고 1과 1 (인덱스 1의 경우)을 취하려고합니다.
이번에도 코드 블록이 있습니다. 그러나 더 작은 것을 가질 수는 없습니다. 가장 가까운 것을 필요로합니다.
var diffSecond = lastList.SelectMany((listS, listIndex) => listS.
SelectMany((array, arrayIndex) => array.Select((item, itemIndex) => new
{
ListIndex = listIndex,
ArrayIndex = arrayIndex,
ItemIndex = itemIndex,
Diff = Math.Abs(item - X)
})));
var closestDiffS = diffSecond.Aggregate((agg, item) => (item.Diff < agg.Diff) ? item : agg);
가능한 중복 :
가장 작은 DIFF 모든 목록을 얻으려면 : //stackoverflow.com/questions/25910324/find-closest-value-in-a-list-in-c-sharp-with-linq) – Xaruth
어딘가에 (항목
@Xaruth이 질문의 의견에는 너무 홍수가 나서 새로운 질문을 만들었습니다. – 1teamsah