LINQ QUery:Take()基于文本框值

时间:2009-11-24 10:42:19

标签: linq

我正在创建一个将根据linq语句填充的gridview,sql如下:

SELECT     TOP 10 IDDesc, UnitUserfield1, UnitUserfield2, ProductPercentage
FROM         tblOnlineReportingCOMPLETEWeights
WHERE     (MaterialLevel = 'Primary') AND (MaterialText = 'Paper')
ORDER BY ProductPercentage DESC

现在,我想要做的是让用户指定前十名,所以基本上它是一个“Top x”,它在文本框中定义,即他们在文本框中键入50,执行linq查询, gridview显示前50名。

据我所知,使用Take是我想看的区域,这是正确的吗?这甚至可能吗?!

任何想法,非常感谢。

PS:对于提问问题很抱歉,我对这一切都很陌生!

3 个答案:

答案 0 :(得分:0)

你是对的。获取用户输入并将其提供给Take。那就行了。

int howMany = Convert.ToInt32 (HowManyTextBox.Value);

var queryResult = /*.....*/.Take (howMany);

答案 1 :(得分:0)

int max = 0;

if (Int.TryParse(TextBox1.Text, out max)
{
    var q = (from tbl where ... orderby ... desc).Take(max);
}

沿着这些方向

答案 2 :(得分:0)

非常感谢你,我选择了以下内容:

{
    ORWeightsDataClassesDataContext db = new ORWeightsDataClassesDataContext();
    int max = 0;
        if (int.TryParse(txtbxHowMany.Text, out max))
        {
    var queryV = db.tblOnlineReportingCOMPLETEWeights
                .Where(x => x.MaterialLevel == "Primary" && x.MaterialText == "Paper")
                .OrderByDescending(x => x.ProductPercentage).Take(max);

    GridView1.DataSource = queryV;
    GridView1.DataBind();
        }
}

这是一种享受。

非常感谢,非常感激,现在我的网站终于走到了一起......我觉得谎言在庆祝...酒吧有人吗?!