c# - Linq 列表包含方法

标签 c# linq

我是 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/

相关文章:

c# - Linq 按日期时间/间隔分组

c# - 使用 LINQ 扩展日期范围

linq - 使用 Linq 获取列表中对象的索引

c# - 求和 Entity Framework 中两列的差异

c# - 我应该以编程方式内联所有 CSS 文件以优化页面加载速度吗?

c# - 我如何在我的项目中解决初始化字符串的格式不符合从索引 17' 开始的规范

c# - 地址的地理经度和地理纬度

c# - 对多参数函数使用 Math.NET 的 Fit.Polynomial 方法

c# - 子集合 List<string>.Any 的表达式树

c# - 重新排序数据表列