C# 如何使用Where()扩展方法查找大于数组的字段

C# 如何使用Where()扩展方法查找大于数组的字段,c#,C#,我有一个字符串数组“\u from”,它有一些值。 我有一个名为“Query”的查询字段,用于从表中读取值。 此查询有一个名为“path”的字段,其类型为varchar(10)。 我想在查询中查找路径字段的值大于_的所有值。 我可以在for循环中使用where扩展方法,但我想使用“OR条件”not“AND”。 我的意思是我想从数组中找到大于_的第一个字段或第二个字段的任何项 这是我的示例代码 string[] _from = new string[2] { "01-01-002", "02"};

我有一个字符串数组“\u from”,它有一些值。 我有一个名为“Query”的查询字段,用于从表中读取值。 此查询有一个名为“path”的字段,其类型为varchar(10)。
我想在查询中查找路径字段的值大于_的所有值。 我可以在for循环中使用where扩展方法,但我想使用“OR条件”not“AND”。 我的意思是我想从数组中找到大于_的第一个字段或第二个字段的任何项

这是我的示例代码

string[] _from = new string[2] { "01-01-002", "02"};
query = query.Where(t=> _from.Any(n=>n <= t.Path));
string[]\u from=新字符串[2]{“01-01-002”,“02”};
query=query.Where(t=>\u from.Any(n=>n试试这个linq:

        string[] query = { "00-00-000", "01-01-001", "01-01-001", "01-01-003", "01-01-020" };
        string[] _from = { "01-01-002", "02" };

        var temp = query.Where(q => _from.Where(from => Compare(q,from) ).Any()).ToList();
并按如下方法进行“比较”:

bool Compare(string query, string from)
    {
        string[] s1Array = query.Split('-');
        string[] s2Array = from.Split('-');
        bool isLarger = false;

        int loopLength = s1Array.Length <= s2Array.Length ? s1Array.Length : s2Array.Length;

        for (int i = 0; i < loopLength; i++)
        {
            if( int.Parse( s1Array[i] ) > int.Parse(s2Array[i]))
            {
                isLarger = true;
                break;
            }
        }

        return isLarger;
    }
bool比较(字符串查询,字符串来源)
{
字符串[]s1Array=query.Split('-');
字符串[]s2Array=from.Split('-');
bool isLarger=false;
int loopLength=s1Array.Length int.Parse(s2Array[i]))
{
isLarger=真;
打破
}
}
返回ISLAGER;
}
希望这有用。

像这样:

string[] query = { "00-00-000", "01-01-001", "01-01-001", "01-01-003", "01-01-020" };
string[] _from = { "01-01-002", "02" };

string valueToCompareTo = _from.Min();

foreach (string s in query.Where(q => string.Compare(q, valueToCompareTo) > 0))
{
    Console.WriteLine(s);
}
输出:

01-01-003
01-01-020

  • 这假定字符串的字典顺序,这通常是SQL Server所做的
  • 如果您想从
    查询
    中查找大于
    中至少一个项目的所有项目,只需将其与
    \u中最小的项目进行比较即可(即字典最小值)

你想如何比较?比如字符串的长度?“路径字段的值大于
\u from
值”-请你解释一下这段话好吗?它的意思是“在
\u from
中有一个项目,它的长度>=
路径。长度
”?或者“
路径
\u from
中的任何项目都长(
长度
)”?或其他任何内容?请提供所需输出的示例编号,而不是长度。我希望与值进行比较,例如“来自的_的第一个字段为”01-01-002“。假设查询中的路径字段具有类似“00,01,01-01-003,01-01-020”的值,我希望返回“01-01-003,01-01-020”“当SQL server返回这些结果时,非常感谢您的回答。不,不是长度。我希望与相应的值进行比较,例如”来自的_的第一个字段是“01-01-002”。假设查询中的路径字段具有类似“00-00-000,01-01-001,01-01-003,01-01-020”的值,我希望在SQL server返回这些结果时返回“01-01-003,01-01-020”。