[英]ASP.NET Processing lambdas
以下linq上需要進行什么代碼清除才能驗證電子郵件ID
錯誤: var validemails = emails.Where(p=>IsValidFormat(p)).Select;
Dictionary<int, string> emails = new Dictionary<int, string>();
emails.Add(1, "Marry@yahoo.com");
emails.Add(2, "Helan@gmail.com");
emails.Add(3, "Rose");
emails.Add(4, "Ana");
emails.Add(5, "Dhia@yahoo.com");
public static bool IsValidFormat(string InputEmailID)
{
var format =
@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}.\.[0-9]{1,3}\.)|
(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
Regex Rex=new Regex(format);
return Rex.IsMatch(InputEmailID);
}
錯誤報告:無法從“ System.Collections.Generic.KeyValuePair”轉換為“ string”
您需要向函數發送字符串,而不是KeyValuePair
var validemails = emails.Where(p=>IsValidFormat(p.Value)).Select(kv => kv.Value);
聽起來電子郵件是字典,而不是簡單的IEnumerable<string>
您想要更多類似這樣的東西:
var validemails = emails.Where(p=>IsValidFormat(p.Key));
要么
var validemails = emails.Where(p=>IsValidFormat(p.Value));
取決於“ emailid”是鍵還是字典中的值。
我還將重構您的驗證方法,如下所示:
public static bool IsValidEmail(this string InputEmailID)
{
var format =
@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}.\.[0-9]{1,3}\.)|
(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
Regex Rex=new Regex(format);
return Rex.IsMatch(InputEmailID);
}
因此,您可以像這樣調用驗證:
var validemails = emails.Where(p=>p.Key.IsValidEmail());
我剛剛嘗試了以下代碼:
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
public class Program
{
private static void Main(string[] args)
{
var emails = new Dictionary<int, string>();
emails.Add(1, "Marry@yahoo.com");
emails.Add(2, "Helan@gmail.com");
emails.Add(3, "Rose");
emails.Add(4, "Ana");
emails.Add(5, "Dhia@yahoo.com");
var validemails = emails.Where(p => IsValidFormat(p.Value)).ToList();
}
public static bool IsValidFormat(string inputEmailId)
{
const string format = @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}.\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
var rex = new Regex(format);
return rex.IsMatch(inputEmailId);
}
}
}
看起來有效。 我不確定100%發生了什么,但是關鍵是您需要使用p.Value。
我確定有人會解釋更詳細的信息-我希望也能從中學到一些東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.