Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将LINQ数据绑定到dropdownlist_C#_Asp.net_Linq_Ado.net - Fatal编程技术网

C# 如何将LINQ数据绑定到dropdownlist

C# 如何将LINQ数据绑定到dropdownlist,c#,asp.net,linq,ado.net,C#,Asp.net,Linq,Ado.net,此代码的最后两行无法正常工作-结果将从LINQ查询返回。我只是不知道如何将结果中指示的列成功绑定到dropdownlist的textfield和valuefield: protected void BindMarketCodes() { List<lkpMarketCode> mcodesList = new List<lkpMarketCode>(); LINQOmniDataContext db = new LINQO

此代码的最后两行无法正常工作-结果将从LINQ查询返回。我只是不知道如何将结果中指示的列成功绑定到dropdownlist的textfield和valuefield:

    protected void BindMarketCodes()
    {
        List<lkpMarketCode> mcodesList = new List<lkpMarketCode>();

        LINQOmniDataContext db = new LINQOmniDataContext();

        var mcodes = from p in db.lkpMarketCodes 
                        orderby 0
                        select p;

        mcodesList = mcodes.ToList<lkpMarketCode>();

        //bind to Country COde droplist
        dd2.DataSource = mcodesList;
        dd2.DataTextField = mcodesList[0].marketName;
        dd2.DataValueField = mcodesList[0].marketCodeID.ToString();

    }

见下面修订的代码

protected void BindMarketCodes()
{    
    using (var dataContext = new LINQOmniDataContext()) {
        //bind to Country COde droplist
        dd2.DataSource = from p in dataContext.lkpMarketCodes 
            orderby p.marketName
            select new {p.marketCodeID, p.marketName};
        dd2.DataTextField = "marketName";
        dd2.DataValueField = "marketCodeID";
        dd2.DataBind();
    }
}

谢谢你添加这个。出于您概述的原因,我更喜欢您的方法。如何以这种方式向dd2添加属性?您将如何在视图中引用它?我正在寻找一种方法来解决这个确切的问题。我的在没有ToList的情况下坏了。在我添加dd2.DataBind之前,它无法工作;正如Andrew_Robinson所建议的那样,这个解决方案太复杂了,而且可以通过Andreer给出的更容易理解的答案来实现
protected void BindMarketCodes()
{
    using(var dc = new LINQOmniDataContext())
    {
        dd2.DataSource = from p in db.lkpMarketCodes
                         orderby 0
                         select new {p.marketName, p.marketCodeID };
        dd2.DataTextField = "marketName";
        dd2.DataValueField = "marketCodeID";
        dd2.DataBind();
    }
}

// no need to use ToList()
// no need to use a temp list;
// using an anonymous type will limit the columns in your resulting SQL select
// make sure to wrap in a using block;
DropDownList ddl_RouteLocation = (DropDownList)e.Row.FindControl("ddl_RouteLocation");   

ddl_RouteLocation.DataSource = dtLocation;--(dtlocation i have return method of linq in dtlocation)
ddl_RouteLocation.DataTextField =dtLocation.Rows[0]"LocationName"].ToString();
ddl_RouteLocation.DataValueField =dtLocation.Rows[0]["LocationId"].ToString();
ddl_RouteLocation.DataBind();
ddl_RouteLocation.Items.Insert(0, new ListItem("--Select--", "0"));