0

我正在制作一个带有显示一些 sql 数据的数据网格的 WPF 应用程序。现在我正在创建一个搜索字段,但这似乎不起作用:

  • 联系人是一个 nvarchar
  • bedrijf 是一个 nvarchar 但
  • LeverancierPK 是一个 INT 我如何在搜索中结合它?如果我将 LeverancierPK 转换为字符串,那么我可以使用 Contains 但这会给我一个错误

        //Inisiatie
        PRCEntities vPRCEntities = new PRCEntities();
    
        var vFound = from a in vPRCEntities.tblLeveranciers
                     where ((((a.LeverancierPK).ToString()).Contains(vWoord)) ||
                           (a.Contactpersoon.Contains(vWoord)) ||
                           (a.Bedrijf.Contains(vWoord)))
                     orderby a.LeverancierPK
                     select a;
        myDataGrid_Leveranciers.ItemsSource = vFound;
    

谢谢

4

2 回答 2

0

这段代码可以做我正在寻找的东西,但我认为它可能会更短。

            PRCEntities vPRCEntities = new PRCEntities();

        var vFound = from a in vPRCEntities.tblLeveranciers
                     orderby a.LeverancierPK
                     select a;

        myDataGrid_Leveranciers.ItemsSource = null;
        myDataGrid_Leveranciers.Items.Clear();

        foreach (var item in vFound)
        {
            if (item.Bedrijf.Contains(vWoord))
            {
                myDataGrid_Leveranciers.Items.Add(item);                    
            }
            else
            {           
                if (item.LeverancierPK.ToString().Contains(vWoord))
                {
                    myDataGrid_Leveranciers.Items.Add(item);
                }
                else
                {
                    if (item.Contactpersoon != null)
                    {
                        if (item.Contactpersoon.Contains(vWoord))
                        {
                            myDataGrid_Leveranciers.Items.Add(item);
                        }
                    }
                }
            }                
        }
于 2013-02-27T19:37:21.873 回答
0

如果您不关心从数据库中拉回所有记录(在您的回答中您将所有记录都拉回),那么您可以.ToList()在 where 子句之前执行一个。

var vFound = vPRCEntities.tblLeveranciers.ToList()
             .Where(a => a.LeverancierPK.ToString().Contains(vWoord)) ||
                   a.Contactpersoon.Contains(vWoord) ||
                   a.Bedrijf.Contains(vWoord))
             .OrderBy(a.LeverancierPK);
于 2013-02-27T20:21:19.220 回答