当前位置:  开发笔记 > 前端 > 正文

LINQ SQL查询检查对象字段是否为空

如何解决《LINQSQL查询检查对象字段是否为空》经验,为你挑选了1个好方法。

我正在尝试编写一个SQL查询,根据输入的字段筛选gridview.有四个字段,title,firstname,surname和Company.Name.

前三个很好,因为它们永远不会为null,但第四个可以为null.以下LINQ查询工作正常:

var listofclients = from client in allcients
                    where client.Title.ToLower().Contains(titletxtbox.Text.Trim().ToLower())
                    where client.Firstname.ToLower().Contains(firstnametxtbox.Text.Trim().ToLower())
                    where client.Surname.ToLower().Contains(surnametxtbox.Text.Trim().ToLower())
                    orderby client.Name

但是当我尝试为公司设置一个过滤器时,当公司为空时,我将在运行时收到错误

var listofclients = from client in allcients
                    where client.Title.ToLower().Contains(titletxtbox.Text.Trim().ToLower())
                    where client.Firstname.ToLower().Contains(firstnametxtbox.Text.Trim().ToLower())
                    where client.Surname.ToLower().Contains(surnametxtbox.Text.Trim().ToLower())
                    where client.Company.Name.ToLower().Contains(companynametxtbox.Text.Trim().ToLower())
                    orderby client.Name

我想知道的是,是否有一种方法来构建查询,以便它只在client.Company字段不为null时进行过滤.

当我直接从像这样的文本框字段中提取时,我也容易受到SQL注入等的攻击.我知道在这种情况下它没有连接到数据库,但如果它可以,它们可以做一个下降.或者即使它没有连接到数据库,他们可以摆弄列表中的对象吗?

谢谢

乔恩霍金斯



1> tvanfosson..:

我假设您想要所有匹配的记录,其中公司为空,但在公司存在时按名称过滤.以下应该这样做.此外,您不必担心SQL注入,因为LINQToSQL使用参数化查询.如果您打算从中进行插入并在Web上显示任何值以避免XSS攻击,则必须担心清除客户端控件中可能存在的任何HTML.

var listofclients = from client in allcients
                    where client.Title.ToLower().Contains(titletxtbox.Text.Trim().ToLower())
                    where client.Firstname.ToLower().Contains(firstnametxtbox.Text.Trim().ToLower())
                    where client.Surname.ToLower().Contains(surnametxtbox.Text.Trim().ToLower())
                    where client.Company == null || client.Company.Name.ToLower().Contains(companynametxtbox.Text.Trim().ToLower())
                    orderby client.Name

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有