gpt4 book ai didi

c# - 等效的 lambda 值是多少?

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:57 24 4
gpt4 key购买 nike

我正在尝试使用 lambda 模拟以下 python 代码:

checkName = lambda list, func: func([re.search(x, name, re.I) for x in list])

if checkName(["(pdtv|hdtv|dsr|tvrip).(xvid|x264)"], all) and not checkName(["(720|1080)[pi]"], all):
return "SDTV"
elif checkName(["720p", "hdtv", "x264"], all) or checkName(["hr.ws.pdtv.x264"], any):
return "HDTV"
else:
return Quality.UNKNOWN

我已经为长格式创建了以下 C# 代码,但我确信可以使用 lambda 表达式来缩短它:

if (CheckName(new List<string> { "(pdtv|hdtv|dsr|tvrip).(xvid|x264)" }, fileName, true)  == true & 
CheckName(new List<string> { "(720|1080)[pi]" }, fileName, true) == false)
{
Quality = Global.EpisodeQuality.SdTv;
}

private bool CheckName(List<string> evals, string name, bool all)
{
if (all == true)
{
foreach (string eval in evals)
{
Regex regex = new Regex(eval, RegexOptions.IgnoreCase);
if (regex.Match(name).Success == false)
{
return false;
}
}

return true;
}
else
// any
{
foreach (string eval in evals)
{
Regex regex = new Regex(eval, RegexOptions.IgnoreCase);
if (regex.Match(name).Success == true)
{
return true;
}
}
return false;
}
}

任何有助于提高我的理解的帮助将不胜感激!我确信有一种更短/更简单的方法!

所以在玩了一些之后我把它减少到:

    private static bool CheckName(List<string> evals,
string name,
bool all)
{

if (all == true)
{
return evals.All(n =>
{
return Regex.IsMatch(name, n, RegexOptions.IgnoreCase);
});
}
else
// any
{
return evals.Any(n =>
{
return Regex.IsMatch(name, n, RegexOptions.IgnoreCase);
});
}
}

但是一定有一个像 python 代码一样使用 Func 的等价物吗?

最佳答案

类似这样的事情:

private bool CheckName(List<string> evals, string name, bool all)
{
return all ? !evals.Any(x => !Regex.IsMatch(name, x, RegexOptions.IgnoreCase))
: evals.Any( x => Regex.IsMatch(name, x, RegexOptions.IgnoreCase));
}

功能:

List<string> list = new List<string>();

Func<string, bool, bool> checkName = (name, all) => all
? !list.Any(x => !Regex.IsMatch(name, x, RegexOptions.IgnoreCase))
: list.Any(x => Regex.IsMatch(name, x, RegexOptions.IgnoreCase));

checkName("filename", true)

关于c# - 等效的 lambda 值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15569184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com