以下是代码:
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();
Run Code Online (Sandbox Code Playgroud)
我无法获取tst中的所有记录,它只给出了数组中最后一个值的记录.
因此,如果我的数组包含1,2,3,4我只获得4的记录.而我需要1,2和4的所有结果都附加在tst中.
任何帮助将不胜感激.
Jon*_*eet 12
Concat 不修改任何东西 - 它返回一个你当前忽略的新序列.
但是,Concat您应该使用SelectMany以平整序列而不是使用它:
string[] values = Acode.Split(',');
return values.SelectMany(a => entities.Test.Where(t => t.TCode == Convert.ToInt16(a)))
.ToList();
Run Code Online (Sandbox Code Playgroud)
或者更有效率,转换values为a List<short>然后你可以做一个查询:
List<short> values = Acode.Split(',').Select(x => short.Parse(x)).ToList();
return entities.Test.Where(t => values.Contains(t.TCode)).ToList();
Run Code Online (Sandbox Code Playgroud)
那是因为Concat将返回您的可枚举的新实例。
可以在其他情况下使用:
tst = tst.Concat(...)
或从头开始将您的Enumerable更改为列表:
string[] values = Acode.Split(',');
List<Test> tst= new List<Test>;
foreach (string a in values)
{
tst.AddRange(entities.Test.Where(g => (g.TCode == Convert.ToInt16(a))));
}
return tst;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4544 次 |
| 最近记录: |