gpt4 book ai didi

C# 如何在无法在命名空间中包含 System.Linq 的情况下将 FirstOrDefault 与数组一起使用?

转载 作者:太空狗 更新时间:2023-10-30 00:07:31 25 4
gpt4 key购买 nike

当我在 IDE 中测试这里提供的代码时,它可以工作,但是将使用此代码的软件本身并没有给我声明 using System.Linq 的可能性。我一直在试图弄清楚如何使用它,否则我将不得不回到我不想使用的解决方案,因为它的准确率较低。

问题在这里

var stringMatch = sArray.FirstOrDefault(titleID.Contains);

我不确定如何正确提供引用资料。我认为这应该是 System.Linq.Enumerable 的方式...但这是我第一次处理此类问题,因此非常感谢您的帮助。

        string TakeEndPeriod = "";
string NewEndPeriod = "";
string FindEndSpace = "";
string GetEndPeriod = "";
string titleID = "document for the period ended December 31 2014";

string s1 = "ended ";
string s2 = "Ended ";
string s3 = "Ending ";
string[] sArray = new [] { s1, s2, s3};


var stringMatch = sArray.FirstOrDefault(titleID.Contains);
if (stringMatch != null)
{
TakeEndPeriod = titleID.Substring(titleID.LastIndexOf(stringMatch));
FindEndSpace = TakeEndPeriod.Substring(TakeEndPeriod.IndexOf(" "));
GetEndPeriod = FindEndSpace.Substring(1);

string[] formatArray = new[] { "dd MMMM yyyy", "MMMM dd yyyy" };

DateTime ModEndPeriod;
if (!DateTime.TryParseExact(GetEndPeriod,
formatArray,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out ModEndPeriod))
{
//parsing failed

}

NewEndPeriod = ModEndPeriod.ToString("yyyy-MM-ddT00:00:00Z");

编辑:

我得到的错误信息:

'System.Array' does not contain a definition for 'FirstOrDefault' and no extension
method 'FirstOrDefault' accepting a first argument of type 'System.Array' could be
found (are you missing a using directive or an assembly reference?)

编辑:

这是我从管理软件的开发支持那里得到的解决方案:

String Title = "document for the period Ending December 31 2014";
Match M = Regex.Match(Title, ".*?(?i)(ended|ending)(.*)");//Case insensitive search for "ended" and "ending"
if (M.Groups.Count == 3)
{
//Match OK
DateTime DT = DateTime.Parse(M.Groups[2].Value);
//The variable DT will now have the parsed date.
Console.WriteLine(DT.ToString("yyyyMMdd"));
}

最佳答案

doesn't give me the possibility to declare 'using System.Linq'.

由于 Enumerable.FirstOrDefault 是一种扩展方法,您还可以使用它的完全限定类名 System.Linq.Enumerable:

var stringMatch = System.Linq.Enumerable.FirstOrDefault(sArray, s => titleID.Contains(s));

或更短:

var stringMatch = System.Linq.Enumerable.FirstOrDefault(sArray, titleID.Contains);

请注意,扩展方法只是一个静态方法,这就是它起作用的原因。

Demo

关于C# 如何在无法在命名空间中包含 System.Linq 的情况下将 FirstOrDefault 与数组一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24449750/

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