1
  List<DocumentDTO> lstDocs = objService
    .SelectDocumentInfo()
    .Where(l => int.Parse(l.FileName.Substring(0, l.FileName.IndexOf('\'))) = docID)
    .ToList();

我的 docID 是一个int

279\Chrysanthemum.jpg

279 是我的 docID,我只想获取那些在指定的 FileName 前面有 279 的记录,或者如果 docID 更改为其他内容,则只能通过 LINQ 获取这些记录。

我怎样才能做到这一点?

4

2 回答 2

6

这可能是一种可行的方法:

List<DocumentDTO> lstDocs = objService.SelectDocumentInfo()
    .Where(l => l.FileName.StartsWith(string.Concat(docID, @"\"))
    .ToList();
于 2013-01-09T06:51:58.530 回答
2

编辑

你也可以这样做

List<DocumentDTO> lstDocs = objService
    .SelectDocumentInfo()
    .Where(l => Convert.ToInt32( (l.FileName.Split('\\'))[0] )  == docID)
    .ToList();

通过对字符串应用拆分函数


您的代码中的一项更改

 List<DocumentDTO> lstDocs = objService
.SelectDocumentInfo()
.Where(l => int.Parse(l.FileName.Substring(0, l.FileName.IndexOf('\'))) == docID)
.ToList();

你需要把“==”而不是“=”检查上面的正确代码


注意:如果你有像 279\Chrysanthemum.jpg 这样的字符串,只有当它像这样 279\Chrysanthemum1.jpg 时才有效,而不是这样失败

像这样从字符串中获取数字并尝试

  stringThatHaveCharacters = stringThatHaveCharacters.Trim();
    Match m = Regex.Match(stringThatHaveCharacters, "\\d+");
    int number = Convert.ToInt32(m.Value);

所以试试这样

  List<DocumentDTO> lstDocs = objService
    .SelectDocumentInfo()
    .Where(l => Convert.ToInt32( (Regex.Match(l.FileName, "\\d+")).Value)  == docID)
    .ToList();
于 2013-01-09T06:51:18.967 回答