C# Linq where子句

3
我正在尝试创建一个linq查询,其中where子句是基于用户选择构建的变量。
if (!string.IsNullOrEmpty(txbbox.Text)) 
{

  query = "s.date== DateTime.Parse(txbbox.Text)";
}

if (!string.IsNullOrEmpty(txbbox.Text))
{
   query = query + " & (s.type.Contains(txbbox.Text))";
}

有一种方法可以在LINQ查询中的WHERE子句中传递变量吗?
 Stemp = (from s in SList
               where ***query***
               orderby s.DataScadenza
               select s).ToList();

1
@HimBromBeere 这里不需要使用字符串,所以我认为这并不适用。 - Marc Gravell
注意:您正在从同一文本框中读取两次,并应用完全不兼容的测试...这几乎肯定是一个错误。 - Marc Gravell
1个回答

6

是的,在这种情况下相当简单:

    IEnumerable<Whatever> query = SList; // avoid var here, as will impact later assignment
    if (!string.IsNullOrEmpty(txbbox.Text)) 
    {
        var when = DateTime.Parse(txbbox.Text); // to avoid parsing per item
        query = query.Where(s => s.date == when);
    }
    if (!string.IsNullOrEmpty(txbbox.Text))
    {
        query = query.Where(s => s.type.Contains(txbbox.Text));
    }
    Stemp = query.OrderBy(s => s.DateScadenze).ToList();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接