在linq的两个foreach?

时间:2014-09-19 14:09:15

标签: c# linq foreach

...我已经尝试了一些东西,但我得到了#34;本地序列不能用于查询运算符的LINQ to SQL实现,除了Contains运算符。"例外。 我正在谈论这个:

Query = Query.Where(t => this.SysTextBox.Text.CSL2Array().All(ss => t.SysName.Contains(ss)));

我对此有点新意,但我一直努力让它发挥作用。先感谢您!

2 个答案:

答案 0 :(得分:0)

var arr = this.SubSystemTextBox.Text.CSL2Array();
var notContained = Query.Where(td=>arr.Any(ss => !td.SubsystemName.Contains(ss)));
Query = Query.Except(notContained);

你可以想出如何在一行中做到这一点,这只是为了清楚。

答案 1 :(得分:0)

您应该可以在ToList之后执行查询:

Query = Query.ToList<TagsDeleted>()
             .Where(t => this.SubSystemTextBox.Text.CSL2Array().All(ss => t.SubsystemName.Contains(ss)))
             .AsQueryable<TagsDeleted>();

但这不容易阅读,我会重构以下内容,以明确“我创建一个列表,并想要删除一些项目”:

var words = this.SubSystemTextBox.Text.CSL2Array();
var list = Query.ToList<TagsDeleted>();
list.RemoveAll(t => !words.All(word => t.SubsystemName.Contains(word)));
Query = list.AsQueryable<TagsDeleted>();