建立声明动态的地方

时间:2018-01-05 13:13:55

标签: c# linq

我有一个列表,我希望在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为空。

enter image description here

它可以在这里工作并且显示应该做的很好,但它不适用于其他条件 enter image description here

新代码

 _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;

1 个答案:

答案 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();