匿名类型出现在两个错误中

时间:2013-03-05 14:57:24

标签: c# asp.net linq

我有一个linq查询,用于填充GridView上的Page_Load。我为字母表制作了一个for字符循环。在填充.Command的{​​{1}}的{​​{1}}中,我使用查询中的相同参数运行一个非常相似的查询,并获得以下错误。

  

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

LinkButton

LoadGrid()是相同的,但它不使用LinkButton条件。 你有什么想法如何解决错误?

错误不会引发异常,但它不会为任何一个查询填充网格。在以下行中发现了错误: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) { } }

5 个答案:

答案 0 :(得分:2)

更改网格数据源

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

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

 List<Entities> abc=query.ToList();
 grd_Provider.DataSource =abc;
 grd_Provider.DataBind();

答案 1 :(得分:1)

这是一个建议:

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

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

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

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

答案 2 :(得分:0)

将其转换为ListIEnumberable,您无法将数据源的匿名对象传递给gridview。 query.ToList();

您可以将返回类型转换为

IEnumerable<object>

它可以保存任何匿名类型并轻松绑定为数据源

答案 3 :(得分:0)

我有同样的问题,我在匿名类型中添加了另一个属性,并解决了它。

答案 4 :(得分:-1)

Linq不支持某些功能,如.toDays(),。addDays(),. StartsWith()。所以你需要做的是,首先得到结果而不使用.StartsWith()然后尝试应用一些功能来过滤结果StartsWith perticular id。