如何在LINQ查询中将Int转换为String

时间:2017-09-17 16:35:53

标签: entity-framework linq

我只是尝试使用EFF和Mysql使用以下Linq查询派生一个数组[]:

DM_ItemGroup[] array =
    (from item_grp in DbContext.hexa_item_group
     join item_btn in DbContext.hexa_button
          on item_grp.GroupID equals item_btn.ButtonID
     where item_btn.ButtonType.Equals("G", StringComparison.Ordinal)
     select new DM_ItemGroup
              {
                GroupID = SqlFunctions.StringConvert((decimal)item_grp.GroupID),
                GroupName = item_grp.GroupName,
                ButtonID = item_btn.ButtonID,
                Default_TaxId = item_grp.Default_TaxId,
                Out_Of_Sales = item_grp.Out_Of_Sales,
                Sales_Seq = item_grp.Sales_Seq,
                DataModel_Button = new DM_Button(),
              }).ToArray<DM_ItemGroup>();

我最初尝试.ToString(),但它给了一个例外。尝试SqlFunctions.StringConvert后,我收到以下错误: -

The specified method 'System.String StringConvert(System.Nullable`1[System.Decimal])'
on the type 'System.Data.Objects.SqlClient.SqlFunctions'
cannot be translated into a LINQ to Entities store expression.

如何将GroupID(我的表中的Int)转换为String(我的DataModel需要)?

1 个答案:

答案 0 :(得分:1)

感谢你投下一个完全合法的问题。希望有人以同样的迅速回答问题。

我找到了解决问题的方法如下: -

 using (HexaEntities hh=new HexaEntities())
            {
                var cc = hh.hexa_item_group.ToDictionary(k => k.GroupID, k => k);
                var lst = from l in cc
                          orderby l.Key
                          select new DM_ItemGroup {GroupID = l.Key.ToString(), GroupName = l.Value.GroupName,  Default_TaxId=l.Value.Default_TaxId,ButtonID=l.Value.ButtonID.Value,Out_Of_Sales=l.Value.Out_Of_Sales,Sales_Seq=l.Value.Sales_Seq };
                AllRecords = lst.ToList<DM_ItemGroup>();

            }