「シーケンスには複数の要素が含まれています」というトピックがありますが、ここでは説明しましたが、シーケンスには複数の要素が含まれていますが、複数の要素が含まれている必要があります
var mailTo = db.DRAFT_DLs
.Where(dd => dd.MX_DL == argMailTo)
.Select(dd => new MailAddress(dd.EMAIL))
.ToList();
string mailCc = db.DRAFT_DLs
.Where(dd => dd.MX_DL == "ALL")
.Select(dd => dd.EMAIL)
.SingleOrDefault() ?? "";
// ...
mailTo.ForEach(rcpt => mail.To.Add(rcpt));
mail.CC.Add(mailCc);
完全なエラーメッセージ:
は、ここでは、コードです
Message :System.InvalidOperationException: Sequence contains more than one element
at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult)
at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source)
at IncidentEmailEngine.Program.Main(String[] args) in c:\Dane\VS\IncidentEmailEngine\IncidentEmailEngine\Program.cs:line 94<br/>
StackTrace : at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult)
at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source)
at IncidentEmailEngine.Program.Main(String[] args) in c:\Dane\VS\IncidentEmailEngine\IncidentEmailEngine\Program.cs:line 94
そして、例外が最初の行にスローされます言及しました。問題はそれがリストなので、複数の要素を含む必要があります。
あなたのご意見ありがとうございます。
解決方法:
クエリの結果が複数のレコードを持つため、エラーが95行目にありました。それを書き直す:
var mailTo = db.DRAFT_DLs
.Where(dd => dd.MX_DL == argMailTo)
.Select(dd => new MailAddress(dd.EMAIL))
.ToList();
var mailCc = db.DRAFT_DLs
.Where(dd => dd.MX_DL == "ALL")
.Select(dd => new MailAddress(dd.EMAIL))
.ToList();
// ...
mailTo.ForEach(rcpt => mail.To.Add(rcpt));
mailCc.ForEach(rcpt => mail.CC.Add(rcpt));
問題を解決しました。まだ知られていないのは、エラーが別の行にスローされた理由です。
例外を表示してください – Serghei
この例外は通常、シーケンスに複数の項目が含まれている「シングル」の呼び出しで発生します。それはあなたの質問のコードからどのように発生する可能性を確認するのは難しいです。 [mcve]を提供してください。 –
linq文をそれぞれの文の後に.ToList()を呼び出して、一連の別々の文に分割し、例外が投げられるものを教えてください。 –