0
で別の列の値に基づいて列を選択する:.NET 4.0とLINQはエンティティに、VS2010、C#を使用して、Select a specific column based on another column's valueが、LINQでは、私の質問はここ1に似ているLINQ
はここに私がいるスニペットです問題と:
var BillingNumbers = (from o in mycontext.MyOrders
where o.Status.Description.Trim().ToUpper().Equals("SHIPPED")
&& (o.ActualShipDate >= date1.Date && o.ActualShipDate < date2.Date)
select new
{BillingNumber = (
o.SiteID == "NYC"? o.NYCBillingNumber.Trim():
o.SiteID == "DAL" ? o.DallasBillingNumber.Trim(): "unknown")
});
foreach (var billingnumber in BillingNumbers)
{
sqlcmd = MyDatabase.GetStoredProcCommand("MyBillingNumberSP") as SqlCommand;
sqlcmd.CommandTimeout = Int32.Parse(Settings.Default.SQL_COMMAND_TIMEOUT.ToString());
MyDatabase.AddInParameter(sqlcmd, "@BillingNumber", DbType.String, billingnumber);
MyDatabase.AddOutParameter(sqlcmd, "@MyOutputParam", DbType.Boolean, 1);
LobjDS = MyDatabase.ExecuteDataSet(sqlcmd); //GETTING AN ERROR HERE
bool JobbingApplied = Convert.ToBoolean(MyDatabase.GetParameterValue(sqlcmd, "@MyOutputParam"));
Console.WriteLine(billingnumber);
}
ExecuteDataSetコマンドはメッセージでInvalidCastExceptionがスローされます:
は<からパラメータ値を変換に失敗しました> f__AnonymousType0`1文字列に変換します。
何が間違っていますか、この匿名型が文字列として解釈しようとするとエラーが発生するのはなぜですか?
ありがとうございます。 billingnumber.BillingNumberよりもエレガントな方法がありますか? – FMFF
あなたは選択を ' o.SiteID ==" NYC "を選択するように変更できますか? o.NYCBillingNumber.Trim(): o.SiteID == "DAL"? "(IEnumerable'を返します)、残りのコードはそのまま残すことができます –
Keith