日期:2014-05-20  浏览次数:20788 次

如何查询一组数的最大值或者最小值是否在你的输入中
问题很简单:一个文本框form1,需手动输入几个数,输出结果均为三为一组的数字,比如123,234,789,138。。。
现在需要判断输出的三位一组的数字中的最大值或者最小值是否在form1中。
如下代码欲实现 判断三为一组的数字的最大值是否包含在form1文本框中
C# code

var data1 = form1.Text;
Func<string, bool> Filter = x => x.Length == 3 && new int[] {x[0],x[1],x[2]}.Max().Any(y => data1.Contains(y.ToString()));



报错,int 不包含Any定义
个人理解是对x取Max()后为单个Int 数据 ,此时没法用Any来判断了,那请问如何更改后可实现此功能?

还有,有没有linq方法实现判断以上三位一组的数据中的中间数x?即X为min<=x<=max的那个数,如123,x=2

------解决方案--------------------
C# code
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            bind("7,8,9".Split(','));
    }
    private void bind(string[] stringarray)
    {
        int i = 0, j = 0;
        List<string> str = new List<string>();
        for (i = 0; i < 1000; i++)
        {
            string str_temp = "";
            if (i < 10)
                str_temp = "00";
            else if (i < 100)
                str_temp = "0";
            str.Add(str_temp + i.ToString());
        }
        var source1 = from t in str where select_string(t, stringarray) select t;
        DataTable dt = new DataTable();
        for (i = 1; i <= 10; i++)
            dt.Columns.Add("列" + i.ToString(), typeof(string));
        i = 0; j = 0;
        dt.Rows.Add();
        foreach (var t in source1)
        {
            if (j >= 10)
            {
                dt.Rows.Add();
                i++;
                j = 0;
            }
            dt.Rows[i][j] = t;
            j++;

        }
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
    private bool select_string(string str, string[] stringarray)
    {
        char str_char = str[0];
        for (int i = 1; i < str.Length; i++)
        {
            str_char = str_char < str[i] ? str[i] : str_char;
        }
        if (stringarray.Contains(str_char.ToString()))
            return true;
        return false;
    }