如何在使用C#LINQ填充下拉列表之前修剪元素

时间:2017-09-08 14:18:29

标签: c# asp.net entity-framework linq

这是我的LINQ查询使用:

return dbContext.Books.Where(el => el.Name.Equals(name)).OrderBy(el => el.ID).ToList();

我从列表中得到两个值Value和Description。

<asp:DropDownList ID="ddlBooks" runat="server" DataTextField="Description" DataValueField="Value" AppendDataBoundItems="true">

ddlBooks.DataSource = EggController.getBooksList("Fiction"); 
ddlBooks.DataBind();

以下不起作用。

ddlBooks.Items.FindByValue(bookdtls.Book.TrimEnd()).Selected = true;

问题:我认为我需要在FindByValue失败时修剪“值”字段。这里有什么帮助?如何从ToList()修剪下面的内容?

return dbContext.Books.Where(el => el.Name.Equals(name)).OrderBy(el => el.ID).ToList();

1 个答案:

答案 0 :(得分:2)

您可以使用此方法查找ListItem

,而不是修剪数据源。
ListItem item = ddlBooks.Items.Cast<ListItem>()
    .First(item => item.Value.Trim() == bookdtls.Book.Trim());
item.Selected = true;

如果可能未包含图书名称,请使用FirstOrDefault并检查null

但是你应该在之前修改名称​​,然后将它们插入到数据库中。

  

不幸的是,SQL Server在右边添加了值,这给出了一个问题

sql-server没有添加任何东西。也许您使用了错误的数据类型,例如char而不是varchar / mvarchar。然后它是固定长度的。因此,如果文本为foo但列为char(10),则会获得7个额外空格。然后将其设为varchar - 列(如果unicode使用nvarchar)。