如何做字符串组合和查询与Linq

本文关键字:查询 Linq 组合 何做 字符串 | 更新日期: 2023-09-27 17:50:35

如何将变量组合为字符串并在LINQ查询中的where条件中使用该字符串?我试过了:

query = query.Where(p => (p.Cod + p.Year + p.Count).StartsWith("BS201412"));

我的变量如下:

  • Codstring
  • Yearshort
  • Countint类型

我也试过这个:

  query = query.Where(p => (p.Cod + SqlFunctions.StringConvert((double) p.Year)+ SqlFunctions.StringConvert((double) p.Count)).StartsWith("BS201412"));

,但由于Year查询不工作在两个变体

如何做字符串组合和查询与Linq

你有很多选择,其中两个是:

  1. 使用字符串。格式-它自动将每个参数转换为字符串
  2. 在复杂变量
  3. 上使用ToString方法

的例子:

string cod = "BS";
short year = 14;
int count = 100;
Console.WriteLine(String.Format("{0}{1}{2}", cod, year, count));
Console.WriteLine(cod + year.ToString() + count.ToString());

两种情况下的输出是相同的:

BS14100
BS14100

你的查询行可以像这样:

query = query
        .Where(p => String.Format("{0}{1}{2}", p.Cod, p.Year, p.Count)
        .StartsWith("BS201412"));

因为你使用的是LINQ2SQL,一些函数不能使用(因为它们不能直接转换为SQL)。您可以尝试一种不同的方法—看起来您已经有了想要搜索BS201420的字符串,因此您可以对字符串进行分区,将每个部分转换为相应的类型并编写一个正常的查询,如下所示:

var searchFor = "BS201420";
var cod = searchFor.Substring(0, 2);
// example - use short.TryParse in your code
var year = short.Parse(searchFor.Substring(2, 4));
// example - use int.TryParse in your code
var count = int.Parse(searchFor.Substring(4,2));
query = query.Where(p => p.Cod == cod && p.Year == year && p.Count == count);

这将找到与字符串相同的结果集,并以。

开始