我是 linq 的新手,我使用 linq 查询从表中检索数据。我的想法是列出与特定用户对应的所有现金保险箱并将其显示在下拉列表中。
表结构如下所示
Table 1
cashsafeid cashsafename
1 cashsafe1
2 cashsafe2
3 cashsafe3
Table 2
Id UserId Cashsafeid
1 100 1,2,3
2 101 1,3
我必须获取特定用户的 cashsafename(例如 100)。我怎样才能实现它 下面的代码是我尝试过但卡住了
List<Cashsafe> cashsafes=(from c in db.Table 1
where c.CashsafeId contains() )--Cannot go further
最佳答案
您以非常低效的方式存储用户的 Cachsafeid 列 - 它不允许为 LINQ 提供程序生成有效的 SQL。因此,以下解决方案性能不佳 - 如果您关心这一点 - 更改您的表结构。
var user = db.Table2.Single(u => u.UserId == 100);
var cachfeIds = user.Cashsafeid.Split(',').Select(int.Parse).ToArray();
var cachefes = db.Table1.Where(c => cachfeIds.Contains(c.Id)).ToList();
基本上你需要连接到表,但外键是“虚拟的” - 它只存在于你的脑海中。要检索外键值,我们必须拆分每个用户的 Cachsafeid 列的值以检索链接的缓存文件。然后才使用单独的请求检索缓存(我认为 LINQ 将从表中检索所有值以及 C# 代码中的执行位置部分)。
关于c# - Linq 列表包含方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23108967/