C# 如何从单选按钮列表中的var获取数据

C# 如何从单选按钮列表中的var获取数据,c#,asp.net,linq,stored-procedures,linq-to-sql,C#,Asp.net,Linq,Stored Procedures,Linq To Sql,我正在使用LINQtoSQL,我的.cs页面代码是 var rrlist = db.sel_aut_rec(12); //stored procedure if (rrlist.Count() != 0) { rblist1.DataSource = rrlist; //radio button list rblist1.DataTextField ="tbl1.j_title"; rblist1.DataValueField ="tbl1.ed_journal_id"; rblist1.D

我正在使用LINQtoSQL,我的.cs页面代码是

var rrlist = db.sel_aut_rec(12); //stored procedure

if (rrlist.Count() != 0)
{
rblist1.DataSource = rrlist;  //radio button list
rblist1.DataTextField ="tbl1.j_title";
rblist1.DataValueField ="tbl1.ed_journal_id";
rblist1.DataBind();
}
我的存储过程代码是

ALTER PROCEDURE dbo.sel_aut_rec
@auth_id int
AS
 select tbl1.ed_journal_id,tbl1.j_title from tbl_aut_rec as tbl inner join editor_j_inf as tbl1 on tbl.j_id=tbl1.ed_journal_id where tbl.auth_id=@auth_id order by tbl.aut_rec_id desc

RETURN
我不知道如何从包含许多行的rrlist1中获取特定列

我的问题解决了


你应该

更改SP并选择Id、名称或任何内容以唯一标识单选按钮。 在您的案例中假设Auth_Id和Auth_name。 将两者设置为您的列表。 SP:

政务司司长:

select*将从all表中获取all CLUMNS,因此您需要为其提供正确的列名和列id

rblist1.DataTextField = "ColumnName" //For display purpose like description field

rblist1.DataValueField = "ColumnName" //For storing in DB like id field name 

请查看此

您也可以使用Linq instaid来使用存储过程:

var rrlist = dbo.tbl_aut_rec.Join(dbo.editor_j_inf, a => a.j_id, e => e.ed_journal_id, (a, e) => new { Author = a, Editor e})
.Where(AuthorAndEditor => AuthorAndEditor.Author.auth_id.Equals(Convert.ToInt32(Request.Cookies["authorid"].Value))
.OrderBy(AuthorAndEditor => AuthorAndEditor.Author.aut_rec_id).ToList();

if (rrlist.Count() != 0)
{
rblist1.DataSource = rrlist;  //radio button list
rblist1.DataTextField = "Id"  //how to take particular column from rrlist1 containing many row
rblist1.DataValueField = "Name" //how to take particular column from rrlist1 containing many row
rblist1.DataBind();
}

我是用记事本快速写的,所以可能会有输入错误。

请看我编辑的问题,我尝试了这个方法,但系统出现了错误。InvalidOperationException:查询结果不能枚举多次。在rrlist1.databind@阿尔卑斯山:其实计数已经数到一次了。你必须去掉计数。否则,您需要使用var x=rrlist.ToArray将其转换为数组,如果使用x.Length>0,则将其转换为数组。但这不是强制要求你保持检查。这取决于您。请看我编辑的问题,我已经尝试过了,但系统出现错误。InvalidOperationException:查询结果不能枚举多次。在rrlist1.databind;你能试着编辑我做的吗?我已经有一段时间没有在Linq中执行类似的操作了。您是否可以将此Linq查询放入SP中,以便我可以在不同的页面中重复使用它?它是否按预期工作?我建议在这个Linq查询中使用一个类,它基本上可以让您做同样的事情。1> 创建一个静态类,例如:ServiceManager.cs 2>创建一个具有相应名称的静态方法3>在应用程序的不同页面中使用该类。请参阅我编辑的问题,我已经尝试过,但错误即将出现。InvalidOperationException:查询结果不能枚举多次。
var rrlist = db.sel_aut_rec(Convert.ToInt32(Request.Cookies["authorid"].Value); //stored procedure

if (rrlist !=null)
{
rblist1.DataSource = rrlist;  
rblist1.DataTextField =  "Id"  // You should pick Id and Name 
                               //{or whatever suits your need} so as 
                               //  to set the text and value
rblist1.DataValueField = "Name"
rblist1.DataBind();
}
rblist1.DataTextField = "ColumnName" //For display purpose like description field

rblist1.DataValueField = "ColumnName" //For storing in DB like id field name 
var rrlist = dbo.tbl_aut_rec.Join(dbo.editor_j_inf, a => a.j_id, e => e.ed_journal_id, (a, e) => new { Author = a, Editor e})
.Where(AuthorAndEditor => AuthorAndEditor.Author.auth_id.Equals(Convert.ToInt32(Request.Cookies["authorid"].Value))
.OrderBy(AuthorAndEditor => AuthorAndEditor.Author.aut_rec_id).ToList();

if (rrlist.Count() != 0)
{
rblist1.DataSource = rrlist;  //radio button list
rblist1.DataTextField = "Id"  //how to take particular column from rrlist1 containing many row
rblist1.DataValueField = "Name" //how to take particular column from rrlist1 containing many row
rblist1.DataBind();
}