我需要编写一个LINQ查询,将两个表t1和t2连接到不同类型的键上。 表t2的密钥(KeyB)是字符串,表t1的密钥(KeyA)很长。
我正在尝试以下方法,但它提供了一个例外:
Method' System.String StringConvert(System.Nullable`1 [System.Double])' 没有受支持的SQL翻译
...
join t2 in table2 on SqlFunctions.StringConvert((double)t1.KeyA).Trim() equals t2.KeyB
这样做的正确方法是什么?
答案 0 :(得分:0)
我只想扩展其中一个模型。 t1
或t2
类,并添加一个将KeyA
值作为string
返回的新属性:
partial class t1
{
public string KeyAString { get { return KeyA.ToString().Trim(); } }
}
或其他方式,KeyB
值为long
:
partial class t2
{
public long KeyBLong { get { return long.Parse(KeyB); } }
}
这样查询看起来很简单 并且不需要额外的转换:
join t2 in table2 on t1.KeyAString equals t2.KeyB
或
join t2 in table2 on t1.KeyA equals t2.KeyBLong
答案 1 :(得分:0)
使用 Convert.ToString(您的长值),它将转换为SQL JOIN子句。
Table1.Join(Table2, x => Convert.ToString(x.KeyA), y => y.KeyB,
(x, y) => new { x,y })
.ToList()