代码如下:
string[] values = Acode.Split(',');
IEnumerable<Test> tst = null;
foreach (string a in values)
{
if (tst== null)
tst = entities.Test.Where(t=> (t.TCode == Convert.ToInt16(a)));
else
tst.Concat(entities.Test.Where(g => (g.TCode == Convert.ToInt16(a))));
}
return tst.ToList();
我无法获得 tst 中的所有记录,它只给我数组中最后一个值的记录。
因此,如果我的数组包含 1、2、3、4,我只会获取 4 的记录。而我需要将 1、2、3 和 4 的所有结果附加到 tst 中。
我们将不胜感激。
最佳答案
Concat
不修改任何内容 - 它返回一个新的序列,您目前正在忽略它。
但是,而不是使用 Concat
, 你应该只使用 SelectMany
压平序列:
string[] values = Acode.Split(',');
return values.SelectMany(a => entities.Test.Where(t => t.TCode == Convert.ToInt16(a)))
.ToList();
或者更有效地转换values
进入 List<short>
然后你可以做一个查询:
List<short> values = Acode.Split(',').Select(x => short.Parse(x)).ToList();
return entities.Test.Where(t => values.Contains(t.TCode)).ToList();
关于c# - Enumerable.Concat 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37815989/