【发布时间】:2011-10-13 09:48:00
【问题描述】:
对于测试,我需要列出一些参数设置。此列表并非按定义预定义为类型和/或其中的内容。
bool[] trueOrFalse = new bool[] { true, false };
int[] para1 = new int[] { 1, 2, 3 };
int[] para2 = new int[] { 5, 6, 7 };
int[] para3 = new int[] { 1, 2, 3 };
int[] para4 = new int[] { 5, 7, 9 };
List<object> test = (from a in trueOrFalse
from b in para1
from c in para2
from d in para3
from e in para4
let f = c - d
where c - d <= 3
select new { a, b, c, d, e, f }).AsEnumerable<object>().ToList();
结果很好(这只是为了测试),我确实得到了一个包含所有可能参数组合的列表,我可以将其用作另一种方法的参数。 (我需要它作为一个列表,因为据我所知,var test 不能被解析为另一个方法的参数。)
当我在调试模式下将鼠标悬停在测试上方时,我可以看到每一行并且每一行都包含 a 到 f 作为单独的字段。
但是我怎样才能减去这些值呢?
假设我想在列表上使用 foreach 循环。
如何设置 int myA = a 等? 问候,
马蒂斯
【问题讨论】:
-
如果您需要将此列表传递给另一个方法,几乎可以肯定听起来您应该添加一个专用类 - 强制转换为
List<object>只是一个糟糕的解决方法 -
你可能是对的。以后遇到类似问题时会牢记这一点。
标签: c# linq list parameter-passing