這裏提供的代碼適用於我在IDE中測試它,但是使用此代碼的軟件本身不會給我聲明using System.Linq
的可能性。我被困在試圖找出如何使用這個我不得不回到我不想使用的解決方案,因爲它的準確率較低。C#如何在數組中使用FirstOrDefault而命名空間中無法使用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"));
}
回溯....什麼錯誤,你* *實際獲得? – Arran
您應該引用版本> = 3.5的System.Core。爲什麼這可能是一個問題? –
您是否要求Linq的替代方案或獲得Linq的解決方案? –