我有一个列表,我希望在where子句中添加项目,如果我目前没有用户ID,则linq将会崩溃。
List<ScreenermissionsForSearch> _screen = new List<ScreenermissionsForSearch>();
_screen= _security.GetScreenermissionsForSearch();
gridControl1.DataSource = _screen.Where(w => w.Code ==
Convert.ToInt32(txtUserId.Text) || w.ScreenName ==dbscreenanme.Text).ToList();
this.gridView1.Columns[0].Width = 50;
this.gridView1.Columns[1].Width = 100;
所以我需要一些能够附加到where子句来检查字符串是否为空或者不是第一个,或者我是不是在第一个地方这样做了吗?
编辑显示clairty这里只是列出所有内容,我希望它只显示提供者,如果用户ID为空。
新代码
_screen= _security.GetScreenermissionsForSearch();
gridControl1.DataSource = _screen.Where(w => string.IsNullOrEmpty(txtUserId.Text) || w.ScreenName == dbscreenanme.Text).ToList();
this.gridView1.Columns[0].Width = 50;
this.gridView1.Columns[1].Width = 100;
答案 0 :(得分:1)
将此条件添加到where子句string.IsNullOrEmpty(txtUserId.Text)
并更改条件;
gridControl1.DataSource = _screen.Where(w =>
(string.IsNullOrEmpty(txtUserId.Text) || w.Code == Convert.ToInt32(txtUserId.Text)) &&
w.ScreenName == dbscreenanme.Text)).ToList();
如果您在解析失败时不想获得结果,请尝试以下代码;
gridControl1.DataSource = _screen.Where(w =>
w.Code == int.TryParse(txtUserId.Text,out var val) ? val : -1 &&
w.ScreenName == dbscreenanme.Text)).ToList();
var entity = Context.Parents.Include(x => x.Name).ToList();