求教一个linq或者lambda的过滤语句的写法

a123_z 2018-04-11 03:51:03

var list = new List<MUserInfo>()
{
new MUserInfo() {UserName="张三",RoleCode="1001"},
new MUserInfo() {UserName="赵李四",RoleCode="1001" },
new MUserInfo() {UserName="李大哥",RoleCode="1001" },
new MUserInfo() {UserName="李三哥",RoleCode="1001" },
new MUserInfo() {UserName="王李二",RoleCode="1001"},
};
var fName = new string[] { "张","李"};

//不使用for循环,使用linq或者lambda取出所有姓张和行李的人。
list = list.Where(c => fName.Contains(c.UserName)).ToList(); //这样获取的值是不对的。
...全文
358 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
warcraftmgq 2018-04-12
  • 打赏
  • 举报
回复
Linq和Lambda表达式最直接的效果就是时代码看上去更加简洁了,但是如果嵌套的太多导致阅读困难就没必要了。
it_liang 2018-04-12
  • 打赏
  • 举报
回复
引用 7 楼 q107770540 的回复:
 list = list.Where(c => fName.Any(x=>c.UserName.StartWith(x))).ToList();
学习了,我就想用这种方法了,但是没想明白
q107770540 2018-04-12
  • 打赏
  • 举报
回复
 list = list.Where(c => fName.Any(x=>c.UserName.StartWith(x))).ToList();
无情时尚 2018-04-11
  • 打赏
  • 举报
回复
 //不使用for循环,使用linq或者lambda取出所有姓张和行李的人。
            list = list.Where(c => fName.Contains(c.UserName.Trim().Substring(0,1))).ToList(); //这样获取的值是不对的。
正怒月神 2018-04-11
  • 打赏
  • 举报
回复
如果有复姓的话,那么就要用第二种方法
正怒月神 2018-04-11
  • 打赏
  • 举报
回复
var list = new List<User>()
            {
                new User() {name="张三",add="1001"},
                new User() {name="赵李四",add="1001" },
                new User() {name="李大哥",add="1001" },
                new User() {name="李三哥",add="1001" },
                new User() {name="王李二",add="1001"},
            };
            var fName = new string[] { "张", "李" };

            //没有 复姓
            var q = list.Where(x => fName.Contains(x.name[0].ToString())).ToList();

            //有 复姓
            var q1 = list.Where(x => {
                foreach (var item in fName)
                {
                    if (x.name.StartsWith(item))
                        return true;
                }
                return false;
            }).ToList();
csdnFUCKINGSUCKS 2018-04-11
  • 打赏
  • 举报
回复

list = list.Where(c => fName.Contains(c.UserName.Substring(0, 1))).ToList();
a123_z 2018-04-11
  • 打赏
  • 举报
回复
大神求教下~
无情时尚 2018-04-11
  • 打赏
  • 举报
回复
fName里只是张和李,把list集合里的名字第一个字取出来比较

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧