.net – Linq 2实体:在具有不同类型的两列上执行连接

我目前正在使用Entity框架,我想在两列上执行带有连接的
Linq查询,一列是’String’类型,另一列是’Int32’类型.

Somethign类似于

from FirstEntity obj in context.FirstEntity 
                      join SecondEntity obj2 in context.SecondEntity on obj.SecondEntityId equals obj2.Id.ToString()

obj.SecondEntityId为String,obj2.Id为Int32

不幸的是,EF看不到ToString操作.我遇到这个错误(或者一些类似的错误,如果我想将字符串转换为Int32):

LINQ to Entities无法识别方法’System.String ToString()’方法

直到现在,我无法找到一个解决方案.

感谢任何帮助.

最佳答案 我们通常会将这样的内容分解为2个查询(在linq中缺少ToString()实体支持会让我想要伤害小孩子).

var query1 = (from SecondEntity obj2 in context.SecondEntity
             select obj2.ID).ToList();

// now we're using linq to objects which does support ToString()
query1 = query1.Select(x => x.ToString());

// mixing linq to entities and linq to objects
var query2 = from FirstEntity obj in context.FirstEneity
             join SecondEntity obj2 in query1 on obj.SecondEntityId equals obj2.ID

我这样做没有VS,所以一些语法可能是错误的,这不是一个特别好的解决方案,但EF是V1.

点赞