根据单独数据库中的表过滤 Linq 返回集

发布于 2024-11-30 01:41:30 字数 784 浏览 0 评论 0原文

我有两张桌子。一合一数据库,一合一数据库。我需要使用第一个选项填充下拉列表,并按第二个选项进行筛选。我正在使用 Linq-to-SQL。下面是我如何提取“未过滤”列表。

public static DataTable GetSPCCodeList()
{   
   using (var context = ProviderDataContext.Create())
   {
      IQueryable<tblProviderAdminSPCCode> tSPCCode = context.GetTable<tblProviderAdminSPCCode>();
      return (tSPCCode
                 .Where(spcCode => spcCode.Inactive == null)
                 .OrderBy(spcCode => spcCode.SPCCodeID)
                 .Select(spcCode => new 
                                    { spcCode.SPCCodeID, spcCode.SPCDescription, 
                                      spcCode.SPCCategoryID }))
                 .CopyLinqToDataTable();
   }
}

我需要过滤的表仅包含 SPCCodeID 列。我将如何根据第二个表中是否存在来过滤我的列表?

I have two tables. One in one database and one in a separate database. I need to populate a dropdown list with options from the first, filtered by the second. I am using Linq-to-SQL. Below is how I pull the "un-filtered" list.

public static DataTable GetSPCCodeList()
{   
   using (var context = ProviderDataContext.Create())
   {
      IQueryable<tblProviderAdminSPCCode> tSPCCode = context.GetTable<tblProviderAdminSPCCode>();
      return (tSPCCode
                 .Where(spcCode => spcCode.Inactive == null)
                 .OrderBy(spcCode => spcCode.SPCCodeID)
                 .Select(spcCode => new 
                                    { spcCode.SPCCodeID, spcCode.SPCDescription, 
                                      spcCode.SPCCategoryID }))
                 .CopyLinqToDataTable();
   }
}

The table I need to filter against simply contains a column for SPCCodeID. How would I go about filtering my List based on if they exist in the second table?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

落日海湾 2024-12-07 01:41:30

在另一个数据库上生成并执行 LINQ 查询,以将您的 SPCCodeID 集合放入内存变量中,例如

IList<int> spcCodeIDs = /* query goes here */;

然后运行您的查询,但替换像这样的Where子句

.Where(spcCode => spcCode.Inactive == null
                    && spcCodeIDs.Contains(spcCode.SPCCodeID))

Generate and execute a LINQ query on the other database to get a collection of your SPCCodeIDs into memory variable e.g.

IList<int> spcCodeIDs = /* query goes here */;

Then run your query but replace the Where clause like this

.Where(spcCode => spcCode.Inactive == null
                    && spcCodeIDs.Contains(spcCode.SPCCodeID))
独﹏钓一江月 2024-12-07 01:41:30

我将从其他数据库创建这些 SPCCodeID 值的列表,然后将您的 where 子句修改为:

.Where(spcCode => spcCode.Inactive == null && spcCodeList.Contains(spcCode.SPCCodeID))

请记住使用 ToList() 将 scpCodeList 设为实际列表,因为我认为如果您使用两个不同的 DataContext 进行查询,则会出现问题。

I would create a list of these SPCCodeID values from the other database and then modify your where clause to be:

.Where(spcCode => spcCode.Inactive == null && spcCodeList.Contains(spcCode.SPCCodeID))

Remember to make the scpCodeList an actual List using ToList() because I think it will have issues if you make a query with two different DataContexts.

北城挽邺 2024-12-07 01:41:30

实际上,如果多个 SQL 数据库位于同一服务器上并且可在单个连接字符串上使用,则实际上可以使 LINQ to SQL 同时从多个 SQL 数据库中进行选择。

有两个选项:

  1. 在第一个数据库中创建一个链接到第二个数据库的视图
  2. 创建临时数据上下文,复制 DBML 详细信息并修改表名称

有关如何执行这些操作的完整详细信息实际上已在我的博客中列出,而不是在此处重复:http://damieng.com/blog/2010/01/11/linq-to-sql-tips-and-tricks-3

You can actually make LINQ to SQL select from multiple SQL databases at the same time if they are on the same server and available on a single connection string.

There are two options:

  1. Create a view in the first database that links to the second
  2. Create temporary data context, copy the DBML details out and modify the table name

Full details on how to do these are actually listed on my blog rather than repeating them here: http://damieng.com/blog/2010/01/11/linq-to-sql-tips-and-tricks-3

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文