当前位置:  开发笔记 > 编程语言 > 正文

LINQ:自定义列名

如何解决《LINQ:自定义列名》经验,为你挑选了4个好方法。

UPDATE

我基本上将查询绑定到WinForms DataGridView.我希望列标题合适,并在需要时包含空格.例如,我想要一个列标题First Name代替FirstName.


如何在LINQ中创建自己的自定义列名?

例如:

Dim query = From u In db.Users _
            Select u.FirstName AS 'First Name'

Scott Nichol.. 26

正如CQ所述,您不能为字段名称提供空间,但您可以返回新列.

var query = from u in db.Users
            select new
            {
                FirstName = u.FirstName,
                LastName = u.LastName,
                FullName = u.FirstName + " " + u.LastName
            };

然后你可以绑定到上面的变量查询或循环通过它无论....

foreach (var u in query)
{
   // Full name will be available now 
   Debug.Print(u.FullName); 
}

如果要重命名列,可以,但不允许使用空格.

var query = from u in db.Users
            select new
            {
                First = u.FirstName,
                Last = u.LastName
            };

将FirstName重命名为First,LastName重命名为Last.



1> Scott Nichol..:

正如CQ所述,您不能为字段名称提供空间,但您可以返回新列.

var query = from u in db.Users
            select new
            {
                FirstName = u.FirstName,
                LastName = u.LastName,
                FullName = u.FirstName + " " + u.LastName
            };

然后你可以绑定到上面的变量查询或循环通过它无论....

foreach (var u in query)
{
   // Full name will be available now 
   Debug.Print(u.FullName); 
}

如果要重命名列,可以,但不允许使用空格.

var query = from u in db.Users
            select new
            {
                First = u.FirstName,
                Last = u.LastName
            };

将FirstName重命名为First,LastName重命名为Last.



2> Scott Nichol..:

如果要更改标题文本,可以在GridView定义中设置...


    
        
    

在后面的代码中,您可以绑定到用户,它将标题设置为名字.

protected void Page_Load(object sender, EventArgs e)
{
     // initialize db datacontext
     var query = from u in db.Users
                 select u;
     GridView1.DataSource = query;
     GridView1.DataBind();
}



3> Bryan Roth..:

我解决了自己的问题,但你的所有答案都非常有帮助,并指出了我正确的方向.

在我的LINQ查询中,如果列名有多个单词,我会用下划线分隔单词:

Dim query = From u In Users _
            Select First_Name = u.FirstName

然后,在Paint方法中DataGridView,我用空格替换了标题中的所有下划线:

Private Sub DataGridView1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DataGridView1.Paint
    For Each c As DataGridViewColumn In DataGridView1.Columns
        c.HeaderText = c.HeaderText.Replace("_", " ")
    Next
End Sub



4> 小智..:

您还可以添加一个事件处理程序来替换这些下划线!

对于那些喜欢C#的人:

datagrid1.ItemDataBound += 
    new DataGridItemEventHandler(datagrid1_HeaderItemDataBound);

你的处理程序应如下所示:

private void datagrid1_HeaderItemDataBound(object sender, DataGridItemEventArgs e)
{

    if (e.Item.ItemType == ListItemType.Header)
    {
        foreach(TableCell cell in e.Item.Cells)
            cell.Text = cell.Text.Replace('_', ' ');
    }

}

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有