Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
935 views
in Technique[技术] by (71.8m points)

c# - How to check DBNull value in Linq query results

I am using the below code and trying to group by Currency and Code. After this I am trying to loop through the result set.

But the issue is while looping through the results, at the end I am getting the below exception on the for each statement:

Object cannot be cast from DBNull to other types.

    DataTable dt = new DataTable();

    var result = from r in dt.AsEnumerable()
               result r by new
               {
                    currency = r.Field<String>("CURRENCY"),
                    Code = r.Field<String>("CODE")
               }
              into grp
              select new
              {
                   currency = grp.Key.currency,
                   Code = grp.Key.Code,
                   amount = grp.Sum(x => Convert.ToDouble(x["AMOUNT"]))
              };

    foreach (var obj in result)
    {
      String sCurr =obj.currency;
      String Code = obj.Code;
      string amount= obj.amount.ToString());
    }

Please help me to resolve this issue.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Something like

 amount = grp.Sum(x => Convert.ToDouble(x["AMOUNT"] == DBNull.Value ? 0 : x["AMOUNT"]));

If that is the line that is giving you the problem.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...