如何访问IQueryable数据?

Mar*_*mix 8 linq iqueryable

我有IQueryable对象,我需要将IQueryable中的数据放入Textboxs控件中.这可能吗?

我试着像:

public void setdata (IQueryable mydata)
{

    textbox1.text = mydata.????

}
Run Code Online (Sandbox Code Playgroud)

更新:

我这样做:

public IQueryable getData(String tableName, Hashtable myparams)
{
        decimal id = 0;

        if (myparams.ContainsKey("id") == true)
             id = (decimal)myparams["id"];

        Type myType= Type.GetType("ORM_Linq." + tableName + ", ORM_Linq");

        return this.GetTable(tableName , "select * from Articu where id_tipo_p = '" + id + "'");

}


public IQueryable<T> GetTable<T>(System.Linq.Expressions.Expression<Func<T, bool>> predicate) where T : class
{
    return _datacontext.GetTable<T>().Where(predicate);
}
Run Code Online (Sandbox Code Playgroud)

这将返回{System.Data.Linq.SqlClient.SqlProvider+OneTimeEnumerable1 [ORM_Linq.Articu]}`

我没有看到你告诉我的任何方法.我看到Cast <>,Expression,ToString ......

Ahm*_*eed 7

编辑:根据您其他帖子的其他信息更新...

您的getData方法返回IQueryable而不是强类型结果,这就是您最终投射它的原因.尝试将其更改为:

public IQueryable<ORM_Linq.Articu> getData(...)
Run Code Online (Sandbox Code Playgroud)

您是否尝试从不同的表中查询"Articu"?

通过上述更改,您的代码可以重写如下:

ORM_Linq.Articu result = mydata.SingleOrDefault();
if (result != null)
{
    TextBoxCode.Text = result.id.ToString();
    TextBoxName.Text = result.descrip; 
}
Run Code Online (Sandbox Code Playgroud)


如果您有一个结果,请使用SingleOrDefault,如果没有返回结果,它将返回默认值:

var result = mydata.SingleOrDefault();
if (result != null)
{
       textbox1.text = result.ProductName; // use the column name
}
else
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

如果您有多个结果,那么循环它们:

foreach (var item in mydata)
{
   string name = item.ProductName;
   int id = item.ProductId;
   // etc..
}
Run Code Online (Sandbox Code Playgroud)