c# - Enumerable.Concat 不工作

标签 c# asp.net linq

代码如下:

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/

相关文章:

javascript - 如何将文件和属性发送到 ASP.NET MVC 中的 Controller 并接收动态生成的 PDF 作为二进制作为响应?

c# - 使用 LINQ 按内部 Dictionary 值的值对 Dictionary<string,Dictionary<string,string>> 进行排序?

c# - 在 Linq 中,.Select() 的反义词是什么?

c# - 错误/警告显示在 "Error List"上,但网站项目随后消失

c# - ASP.NET MVC 中等效的命名空间?

c# - ASP.NET Core 在默认域 (*.azurewebsites.net) 上跨 Azure Web 应用程序共享身份 Cookie

javascript - cefsharp 从 C# 执行 Javascript

c# - 如何为 TabItem 标题设置最大宽度?

c# - 检查字符串是否只包含字母、数字和下划线

linq - 如何在不运行它们的情况下合并两个 Linq IEnumerable<T> 查询?