10

我有一个填充GridViewon的 linq 查询Page_Load。我for为字母表制作了一个字符循环。在填充 的 中.Command,我正在使用查询中的相同参数运行一个非常相似的查询,并得到以下错误。LinkButtonLinkButton

'<>f__AnonymousType2' 类型存在于'ConcernContracts.dll' 和'System.Web.WebPages.Deployment.dll' 中

void lnkCharacter_Command(object sender, CommandEventArgs e)
{
    try
    {
        var lbtn = (LinkButton)lbl_Alphabet.FindControl("lnkCharacter" + e.CommandArgument);
        var id = lbtn.Text;

        using (var db = new dbDataContext())
        {
            var query = from n in db.tbl_Providers
                        where ((n.provider_Name.StartsWith(id)) && (n.provider_Deleted == false))
                        select new
                        {
                            n.ProviderId,
                            n.provider_Name
                        };

            grd_Provider.DataSource = null;
            grd_Provider.DataSource = query;
            grd_Provider.DataBind();
        }
    }
    catch (SystemException ex) { }
}

LoadGrid() 是相同的,但它不使用.StartsWith()条件。你有任何想法如何解决这个错误?

该错误不会引发异常,但不会为任一查询填充网格。在以下行中发现了错误:grd_Provider.DataSource = query;

4

5 回答 5

2

更改网格数据源

grd_Provider.DataSource = query.ToList();
grd_Provider.DataBind();

或创建具有两个属性 Provider Id 和 Name 的列表,并像这样从输出中绑定该列表。

 List<Entities> abc=query.ToList();
 grd_Provider.DataSource =abc;
 grd_Provider.DataBind();
于 2013-04-12T10:54:04.507 回答
1

这是一个建议:

您的两个类似查询可能与您在 LINQ 查询中选择的匿名类型重叠。在一个且只有一个查询中,将 select new 更改为如下所示:

select new
       {
         Id = n.ProviderId,
         Name = n.provider_Name
       };

如果您这样做,匿名类型不应再发生冲突,因为您不修改的类型将使用默认名称。

祝你好运,我希望这会有所帮助!

于 2013-03-05T22:30:58.887 回答
0

将其转换为Listor IEnumberable,您不能将匿名对象作为数据源传递给 gridview。query.ToList();

您可以将返回类型转换为

IEnumerable<object>

它可以保存任何匿名类型,并且很容易绑定为数据源

于 2013-03-18T06:45:56.633 回答
0

I had the same issue and I added another property to the anonymous type and that resolved it.

于 2014-02-17T04:34:35.033 回答
-1

Linq does not support some functionality like .toDays(),.addDays(),.StartsWith() . So what you need to do is,First get the result without using .StartsWith() then try to apply some functionality to filter result StartsWith perticular id.

于 2013-12-17T12:43:40.513 回答