C#中,哪个函数可以提供以次循环比较功能

C#中,哪个函数可以提供以下循环比较功能。
本帖最后由 zcy_1229 于 2015-01-05 15:07:35 编辑
我有一个DataTable表格,其中有两列都是int型的数据,我想把表格中  不存在其他行的两个数据同时比该行的两个数据都大的那些行  找出来。     我随便写了一个简单的表格,我要求的数据比这个行数多。比如下面这个表格  第2、3、6、7、8就是我需要找出的,在GridView上显示。C#中,哪个函数可以提供以次循环比较功能
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

搜索 linq 的 zip函数

 能简单举个例子么??比如上面那个表格,如何写代码??我是现学现用的,学的很慢。。

先学 求msdn上搜,都有实例。别在这等回复强。。

我这个是辅助功能搞研究,没时间系统的学习,我倒是想学习。。实验室也没有人懂这个。。现在也就差这一个函数功能,这个阶段的差不多可以写个小结。。有点着急。


 int[] array1 = new int[] { 2, 3, 12, 21, 12, 23, 32 };
            int[] array2 = new int[] { 10, 56, 0, 654, 8, 22, 65 };
            var temp = array1.Zip(array2, (x, y) => y > x ? y : 0).Distinct().OrderBy(p=>p).ToList();
            var result = temp.Skip(1);   // 结果

至于显示结果  可以修改y > x ? y : 0 中的第二个y来拼接结果。
------解决思路----------------------
懂了,
双重for循环遍历去找呗
比如从第一行开始,逐个跟表中所有行进行比对,当然需要判断一下不要再跟当前行进行比对,然后你需要一个bool变量来标识是否满足条件,如果有任意一行不满足条件,把bool设置成false然后break,继续外层循环的时候先将bool重新设置成true

内层循环结束后(不管是break了还是循环完毕),判断bool值是true还是false,是true就将该行的数据保存到另一个datatable里去
------解决思路----------------------
还有重复输出的问题,其实跟上面说的是同一个问题
你写在else里,那么如下数据:
50,2
33,33
44,44
22,22
那么比较33,33的时候输出一次,比较44,44的时候又输出一次,比较22,22的时候又输出一次
你应该整个循环完了,看都没有比它大的,再输出,而不是有一条符合就给输出了
------解决思路----------------------
双重for循环很难吗?
List<DataRow> result = new List<DataRow>();
foreach(DataRow dr in dt.Rows)
{
    bool bothSmall = false;
    foreach(DataRow tempDr in dt.Rows)
    {
        if(Convert.ToInt32(tempDr["第一列"] > Convert.ToInt32(dr["第一列"]) &&Convert.ToInt32(tempDr["第二列"] > Convert.ToInt32(dr["第二列"]) )
        {
            bothSmall = true;
            break;
        }
    }
    if (!bothSmall)
       result.Add(dr);
}

------解决思路----------------------
int[] array1 = { 5, 6, 9, 59, 18, 76, 54, 32 };
int[] array2 = { 9, 99, 87, 7, 13, 43, 61, 68 };
int[] range = Enumerable.Range(0, array1.Length).ToArray();
int[] result = range
    .Where(i => !range.Any(j => array1[i] < array1[j] && array2[i] < array2[j]))
    .ToArray();