我是Linq的新手,我想修改旧的c#代码以使用Linq.这段代码的想法是选择所有未设置的表和引用的字段PrimaryTable等于"myTable"
foreach (Table table in dbServer.Tables)
{
if (!table.IsSet)
{
foreach (Reference refer in table.References)
{
if (refer.PrimaryTable == "myTable")
{
tables.Add(table);
}
}
}
}
在互联网上挖掘后我得到了这段代码
var q = from table in dbServer.Tables
let refers = from refer in table.References
where refer.PrimaryTable == "myTable"
select refer.ForeignTable
where refers.Contains(table.Name)
select table;
但它根本不起作用,我需要你的帮助才能使它有效.
提前致谢.
Lee*_*Lee 18
var tables = dbServer.Tables
.Where(t => !t.IsSet)
.SelectMany(t => t.References)
.Where(r => r.PrimaryTable == "myTable")
.ToList();
Run Code Online (Sandbox Code Playgroud)
假设表是一个 List<T>
编辑:正如评论所指出的,这与原作不同 - 看起来你真正想要的是这个:
var tables = dbServer.Tables
.Where(t => !t.IsSet && t.References.Any(r => r.PrimaryTable == "myTable"))
.ToList();
Run Code Online (Sandbox Code Playgroud)
这将为您提供所有具有PrimaryTable为'myTable'的引用的表,该引用假定只有一个匹配的引用表.否则,您可以多次添加相同的表.
只需要使用两个来自
var q = from table in dbServer.Tables
where !table.IsSet
from refer in table.References
where refer.PrimaryTable == "myTable"
select table;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8822 次 |
| 最近记录: |