相关疑难解决方法(0)

将Linq转换为实体中的字符串的问题

var items = from c in contacts
            select new ListItem
            {
                Value = c.ContactId, //Cannot implicitly convert type 'int' (ContactId) to 'string' (Value).
                Text = c.Name
            };
var items = from c in contacts
            select new ListItem
            {
                Value = c.ContactId.ToString(), //Throws exception: ToString is not supported in linq to entities.
                Text = c.Name
            };
Run Code Online (Sandbox Code Playgroud)

无论如何我能做到这一点吗?注意,在VB.NET中没有问题使用它工作得很好的第一个片段,VB很灵活,我无法习惯C#的严格!

c# asp.net linq-to-entities tostring

199
推荐指数
4
解决办法
19万
查看次数

在EF 4.0中将字符串转换为Int

有没有办法做到这一点?我在DB中有一个字符串字段,我想在我的LINQ查询中将其解析为一个int属性(是的,它必须在IQueryable级别,而不是在内存中).

我知道2年前EF 1.0无法做到这一点(即使LINQ to SQL支持开箱即用的这个基本功能)...但我只是想知道是否有人在这一点上提出了这样做的方法?

自定义函数映射?特殊语法?什么都没有....

更新:

我尝试了一个模型定义函数如下:

    <Function Name="ConvertToInt32" ReturnType="Edm.Int32">
      <Parameter Name="v" Type="Edm.String" />
      <DefiningExpression>
        CAST(v AS INT)
      </DefiningExpression>
    </Function>

    [EdmFunction("Model.Repository", "ConvertToInt32")]
    public static int ConvertToInt32(string value)
    {
        throw new InvalidOperationException("Only valid when used as part of a LINQ query.");
    }
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.我得到运行时异常:

        ErrorDescription=Type 'INT' could not be found. Make sure that the required schemas are loaded and that the namespaces are imported correctly.
        StackTrace:
             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertTypeName(Node typeName, SemanticResolver sr)
             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertTypeExprArgs(BuiltInExpr astBuiltInExpr, SemanticResolver sr)
             at System.Data.Common.EntitySql.SemanticAnalyzer.<CreateBuiltInExprConverter>b__73(BuiltInExpr bltInExpr, SemanticResolver sr) …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities entity-framework entity-framework-4

20
推荐指数
1
解决办法
1万
查看次数

实体框架:我在哪里扩展CSDL/MSL?

我正在使用Entity Framework 4.我使用数据库第一个模型,这意味着我从数据库生成了EDM.现在我想添加一些模型定义的函数.我的问题是......在哪里?

如果我把它们放在.edmx文件中,下次更新数据库并生成新的EDM时,我的所有添加内容都不会被破坏吗?我的意思是它说它就在.Designer.cs文件的顶部,"如果重新生成代码,将覆盖对该文件的手动更改."

那么,我在什么文件中添加了我的内容?

edmx entity-framework-4

18
推荐指数
1
解决办法
9161
查看次数

Linq表达式中的Int.Parse

我有以下linq表达式.我想在Nvarchar字段中计算数值的总和.我使用以下代码来执行此操作.但是当我尝试运行它时,我收到一个错误.

var m = new MaterialModelContainer();

var list = 
    (from x in
        (
            from inv in m.INVs
            join l in m.LIBs on inv.MESC equals l.MESC
            join o in m.OUTs on inv.MESC equals o.MESC
            join t in m.TRANs on inv.MESC equals t.MESC
            where t.TYPE == "60"
            select new
            {
                l.MESC,
                l.LINE_NO,
                l.UNIT_LINE,
                Description = l.DES + " " + l.PART_NO,
                inv.NEW_QTY,
                o.PJ,
                o.DATE,
                o.QTY,
                o.QTY_REC,
                TranQty = t.QTY,
                tranDate = t.DATE
            }
        )
        group x by
            new
            {
                x.MESC,
                x.LINE_NO,
                x.UNIT_LINE, …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework

12
推荐指数
5
解决办法
2万
查看次数

转换时,我获得LINQ to Entities Int32 ToInt32(System.String)

当convert.i尝试int.Parse(),SqlFunction和EdmFunction时,我得到LINQ to Entities Int32 ToInt32(System.String),但问题仍在继续.

例外:

System.NotSupportedException: LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression
Run Code Online (Sandbox Code Playgroud)

码:

try
    {
        ModelEntities me = new ModelEntities();
        var query = from p in me.Products
                    join c in me.ProductCategories
                    on Convert.ToInt32(p.CategoryId) equals c.CategoryId
                    select new
                    {
                        p.ProductTitle,
                        c.CategoryName
                    };
        rptProducts.DataSource = query;
        rptProducts.DataBind();
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }
Run Code Online (Sandbox Code Playgroud)

entity-framework linq-to-sql

2
推荐指数
1
解决办法
9148
查看次数