【发布时间】:2019-05-22 02:34:16
【问题描述】:
如果我在 LINQPad 中使用以下代码来查询我的数据库,我会得到想要的结果:
LoadTables.Where(o=> o.Approver== "Name Name" ||o.Approver== "Name.Name").Select(o=>o.SubmittedBy).ToList().Distinct()
但是,如果我修改它并将其放入我的代码中,我会收到错误:
public IEnumerable<LoadTable> TableList;
TableList = _context.LoadTable.Where(o => o.Approver == GetADDetails.displayName || o.Approver == GetADDetails.userName).Select(o => o.SubmittedBy).ToList().Distinct();
返回的错误是:
无法隐式转换类型'System.Collections.Generic.IEnumerable<string>' to 'System.Collections.Generic.IEnumerable<App.Models.LoadTable>' An explicit conversion exists.
我哪里错了?
有关上下文,请参阅此处的先前问题:
Using LINQ to loop through data and display in a table
目前它正在为每场比赛返回一个新表,我正试图让它为每个用户返回一个表。
【问题讨论】:
-
您调用了
Select(o => o.SubmittedBy),因此您只返回该字符串SubmittedBy而不是完整的LoadTable对象。因此返回的序列是IEnumerable<string>而不是IEnumerable<LoadTable>。 -
代码
...Select(o=>o.SubmittedBy)正在创建一个可枚举的字符串。如果你想要LoadTable的枚举,那么你需要...Select(o=> new LoadTable{ SubmittedBy = o.SubmittedBy})之类的东西。虽然看起来你只想要字符串。你知道Select在做什么吗? -
删除
.Select(o => o.SubmittedBy) -
@asd 对我来说似乎 OP 正在寻找类似 @987654335@ 的东西(查询提供程序可能不支持)。
-
@René Vogt 正是这样,我目前正在为每场比赛获得一个新表格,我只想要一个用于每个唯一用户名的表格。