这似乎应该很简单,但我不知道如何使它工作。想象以下模型:
public class ModelA
{
public string Code {get;set;}
}
public class ModelB
{
public string Code {get;set;}
}
我正在从数据库中读取一组ModelA,我还需要根据Code抓取ModelB。踢球者是我只需要匹配部分代码。
例如,ModelA 的代码可能是“1234.00”,ModelB 的代码可能是“001234.20”——我想根据包含 1234 部分的两个代码链接这两个模型。我更希望它是一个连接,但我不知道这是怎么可能的,所以迭代第一个数据集并匹配它们也很好,但我仍然无法做到这一点。
我创建了一个名为 TruncateCode 的字符串扩展方法,它将为我提供我想要的部分,但 LINQ 似乎不支持在比较或连接中调用扩展(抛出异常,抱怨该方法无法识别且无法使用) . 这基本上是我正在尝试的:
var query = a in db.ModelASet
(where clause)
select a;
foreach(ModelA item in query)
{
var query2 = b in db.ModelBSet
where b.Code.TruncatedCode() == item.Code.TruncatedCode() // this doesn't work :(
select b;
}
亲爱的读者,你会如何处理这个问题?
(INB4“为什么你的数据是这样排列的?” - 这是一个 10 多年前的遗留数据库,我只是想让它工作。)