linq在两列上不同,并且作为单个字段返回

中华R

我有一张桌子如下

Id username userid departmentname
1   abc     1234    test1
2   abc     3456    test1
3   abc     1234    test2
4   abc     3456    test2
5   def     8989    test1

我想对username和userid列应用不同的字段,并将这两列作为linq中的单个字段返回

所需的输出如下

abc-1234
abc-3456
def-8989

我尝试了以下

[System.Web.Script.Services.ScriptMethod()]
            [System.Web.Services.WebMethod]
            public static List<string> getUserDetails(string prefixText, int count)
            {
                List<string> usernames = new List<string>();
                using (DBEntities context = new DBEntities())
                {
                    var distinctUsers = context.counters.Select(m => new { m.UserName, m.UserID }).Distinct().ToList();                
                    var abc = distinctUsers.Select(p => new  { DisplayText = p.UserName + "-" + p.UserID }).ToList();

                    usernames = abc.Where(r => r.DisplayText.StartsWith(prefixText)).ToList();               

                }
 return usernames;
            }

但是我最终遇到了这个问题。1)一旦获得所需的结果,就需要过滤以输入字符串(前缀文本)开头的列表。我已经在变量abc中获得了所需的结果,并且能够获取以输入字符串开头的列表,但是我得到的错误是“无法将匿名类型列表隐式转换为列表字符串。如何将列表匿名类型转换为列表字符串?2)以上方法更好吗?还是有什么比这更好的方法了?

谢谢“ Ashique”,我没有在另一行代码中使用group by,但如下所示。

var distinctUsers = context.counters.Select(m => (m.UserName + "-" + m.UserID)).Distinct().ToList();
var abc = distinctUsers.AsParallel().Where(x => x.StartsWith(prefixText)).ToList();

默认情况下,以上我也按需要执行了命令。它是默认排序还是我应该实现以下类似命令:

 var distinctUsers = context.counters.Select(m => (m.UserName + "-" + m.UserID)).Distinct().OrderBy(n=>n).ToList();
阿什库扎曼

您可以尝试以下方法:

using (DBEntities context = new DBEntities())
                {
                    var distinctUsers = context.counters.Select(m => (m.UserName + "-" + m.UserID )).ToList();              
                      usernames = distinctUsers.GroupBy(g => g).Select(x => x.FirstOrDefault()).ToList();               

                }

要么

using (DBEntities context = new DBEntities())
                {                                 
                      usernames = context.counters.Select(m => (m.UserName + "-" + m.UserID )).GroupBy(g => g).Select(x => x.FirstOrDefault()).ToList();               

                }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在SQL中使用单独的字段或单个字段作为CSV

LINQ在单个列上分组

比较来自不同文件的2个字段,并且无论顺序如何都仅返回匹配项

Linq - 按多个字段分组并计数(输出单个总数)

从从函数运行的 linq 查询中获取单个字段

CSV文件作为单个字符串返回

选择两列中的单个字段(Mysql)

MongoDB Group操作返回文档,而不是单个字段

如何为表1创建访问表,其中两个表1字段的数据与表2中的单个字段的数据不同?

Django检查单个字段是否有错误并且没有运行clean()?

Linq查询连接两个字段

比较mongodb中不同数组的两个字段

如何从子查询返回两个字段

如何在elasticsearch中同时在嵌套字段中搜索单个对象的两个字段

将多个字段返回到Oracle SQL Developer中的单个用逗号分隔的字段

单个字段上的RequiredFieldValidator

$ project一个新字段,作为mongodb中至少两个字段

Crudrepository /将其他表中的单个字段作为只读连接到实体

与单个字段相比,将 POST 数据作为 JSON 对象提交有什么缺点吗?

Lambda表达式选择并组合字段作为单个字符串

使用两个字段作为键的外部连接两个数据帧

在单字段匿名类型linq中合并两个字段值

两个LINQ查询返回不同的数据类型

如何使用单个字段连接将 SQL 转换为 LINQ?

如何在LINQ中在单个联接中的多个字段上进行联接

如何在LINQ中在单个联接中的多个字段上执行左联接

Java-从循环返回多个值,作为单个字符串

它在 linq 中使用左连接跨越两个表与两个字段

Linq 左外连接两个字段上的两个表