将字符串中的第一个字符与另一个字符串中的任意字符分组

本文关键字:字符 字符串 任意 第一个 另一个 | 更新日期: 2023-09-27 18:09:08

在给定字符串列表的Linq2Sql中,我需要一个查询,该查询返回具有以字符串中的任何字符开头的系统的所有字符串。

这是我想到的:(需要帮助这个函数)

void Main()
{
    var strings = new List<string>(){"ABCDE", "FGHIJ", "KLMNO"};
    var values = GetUsedStrings(strings);
    /*
     * In my case expected to return strings "ABCDE" and "KLMNO" 
     * since there exists Systems that starts
     * with any of the characters in those strings.
     */
    values.Dump();
}
public IList<string> GetUsedStrings(IList<string> strings)
{
    var q = from s in tblSystems
            where s.systemName != null && s.systemName.Length > 0
            group s by s.systemName[0] into g //Somehow need to group by the characters strings list?
            select g.Key;
    return q.ToList();
}

单个字符串检查将是:(按预期工作)

private bool StartsWithAny(string characters)
{
    return
        (from s in tblSystems
        where 
          s.systemName != null && s.systemName.Length > 0 &&
          characters.Contains(s.systemName[0])
        select s).Any();
}

将字符串中的第一个字符与另一个字符串中的任意字符分组

试试这样:

    private bool StartsWithAny(string characters)
    {
         string aa = @"if exists(select * from tblSystems where  
                    systemName is not null and LEN(systemName)>0";
         for (int i = 0; i < characters.Length; i++)
         {
             aa += " and SUBSTRING([login],1,1) = '" + characters[i] + "'";
         }
         aa+=")";
         return db.ExecuteQuery<bool>(aa).Single();
    }

如果你想从List中得到一个新的字符串,但这不会给你真正的组,这会解决你的问题吗?