私は定義されたグリッドのディクショナリを持っています:
Dictionary<Tuple<int, int>, decimal> _details;
キーはItem1 -> ColumnIndex、Item2 -> RowIndex です
3 つの辞書項目をグループ化する必要がある複雑なグループ化方法があります。
同じ行から、列は1,2,3または4,5,6または7,8,9または10,11,12であり、それらを処理しますやれ?
私のコード:
private bool IsValid() { // 数量と値、またはその両方ですべての値をチェックします null // 合計が null でないことをチェックします
if (_details.Count() <= 0)
return false;
var rows = _details.GroupBy(c => c.Key.Item2);
foreach (var item in rows)
{
foreach (var subItem in item)
{
switch (subItem.Key.Item1)
{
case 1:
{
if (!item.Any(c => c.Key.Item1.In(2, 3)))
return false;
break;
}
case 2:
{
if (!item.Any(c => c.Key.Item1 == 1) || item.Any(c => c.Key.Item1 == 3))
return false;
break;
}
case 3:
{
if (!item.Any(c => c.Key.Item1 == 1) || item.Any(c => c.Key.Item1 == 2))
return false;
break;
}
// code continues the same way up to 12
return true;
}
編集:データ
_details = new Dictionary<Tuple<int, int>, decimal>();
_details.Add(new Tuple<int, int>(1, 1), 10);
_details.Add(new Tuple<int, int>(2, 1), 10);
// if abouve data only added return true
_details.Add(new Tuple<int, int>(4, 2), 10);
_details.Add(new Tuple<int, int>(6, 2), 10);
// still true
_details.Add(new Tuple<int, int>(10, 4), 10);
_details.Add(new Tuple<int, int>(11, 4), 10);
//still true
_details.Add(new Tuple<int, int>(2, 2), 10);
_details.Add(new Tuple<int, int>(8, 1), 10);
_details.Add(new Tuple<int, int>(10, 3), 10);
// adding the last 3 return false