MY ABC列数据类型为字符串(文本),值类似于205,198,215 var Qry =( from r in tbl1.AsEnumerable() where Convert.ToDouble(r.Field< string>( ABC))> =转换。 ToDouble(Min_VALUE) &安培;&安培; Convert.ToDouble(r.Field< string>( ABC))> = Convert.ToDouble(Max_VALUE) 选择 new { A_VALUE = Convert.ToDouble(r.Field< string>( ABC )),})。Count(); 解决方案 你在比较ABC> = min和ABC> = max,因此对于值> gt = = max只会为true。我认为你的意思是ABC> = min和ABC < = max 其中Convert.ToDouble(r .Field< string>(ABC))> = Convert.ToDouble(Min_VALUE)&& Convert.ToDouble(r.Field< string>(ABC))< = Convert.ToDouble(Max_VALUE) 如果我理解你,那么你想要从字符串列表中获取值。检查一下: DataTable dt = new DataTable(); dt.Columns.Add( new DataColumn( ABC, typeof ( string ))); dt.Rows.Add( new object [] { 205,198,215}); dt.Rows.Add( new object [] { 105,198,315}); dt.Rows.Add( new object [] { 405,298,215}); dt.Rows.Add( new object [] { 305,398,315}); dt.Rows.Add( new object [] { 305,298,415}); var result = dt.AsEnumerable() .Select(x = > new { Text = x.Field< string>( ABC), Numbers = x.Field< string>( ABC) .Split( new string [] { ,},StringSplitOptions.RemoveEmptyEntries)。选择(y = > Convert.ToInt32(y)) .ToList()}) .Select( x = > new { Text = x.Text, MinVal = x.Numbers.Min(), MaxVal = x.Numbers.Max(), InBetweenVal = x.Numbers.First(y = > y> x.Numbers.Min()&& y< x.Numbers.Max())}) .ToList(); Console.WriteLine( Text\mMinVal\tMaxVal\tInBetweenVal); foreach ( var r in result) { Console.WriteLine( {0} \t {1} \t {2} \t {3},r.Text,r.MinVal,r.MaxVal,r.InBetweenVal); } 结果: 文本MinVal MaxVal InBetweenVal 205,198,215 198 215 205 105,198,315 105 315 198 405,298,215 215 405 298 305,398,315 305 398 315 305,298,415 298 415 305 Hi,I need LINQ query value between two numbers.But, my case is two number is different.the comparison value data type is double.finding the value in the column datatype is string(text)i tried to convert ToDouble. But, it is not working.Query belowMIN and MAX Value datatype is double Ex : 200 and 210MY ABC column datatype is string(text) and value like "205","198","215"var Qry = (from r in tbl1.AsEnumerable()where Convert.ToDouble(r.Field<string>("ABC")) >= Convert.ToDouble(Min_VALUE)&& Convert.ToDouble(r.Field<string>("ABC")) >= Convert.ToDouble(Max_VALUE)select new{A_VALUE = Convert.ToDouble(r.Field<string>("ABC")),}).Count();I want in between values from 200 and 210.so the result is "205"How to write the linq query for string and number..?What I have tried:MIN and MAX Value datatype is double Ex : 200 and 210MY ABC column datatype is string(text) and value like "205","198","215"var Qry = (from r in tbl1.AsEnumerable() where Convert.ToDouble(r.Field<string>("ABC")) >= Convert.ToDouble(Min_VALUE) && Convert.ToDouble(r.Field<string>("ABC")) >= Convert.ToDouble(Max_VALUE) select new { A_VALUE = Convert.ToDouble(r.Field<string>("ABC")), }).Count(); 解决方案 You're comparing where ABC >= min and ABC >= max, so it will only be true for values >= max. I think you mean ABC >= min and ABC <= maxwhere Convert.ToDouble(r.Field<string>("ABC")) >= Convert.ToDouble(Min_VALUE) && Convert.ToDouble(r.Field<string>("ABC")) <= Convert.ToDouble(Max_VALUE)If i understand you well, you want to get in between value from the string-list of numbers. Check this:DataTable dt = new DataTable();dt.Columns.Add(new DataColumn("ABC", typeof(string)));dt.Rows.Add(new object[]{"205,198,215"});dt.Rows.Add(new object[]{"105,198,315"});dt.Rows.Add(new object[]{"405,298,215"});dt.Rows.Add(new object[]{"305,398,315"});dt.Rows.Add(new object[]{"305,298,415"});var result = dt.AsEnumerable().Select(x => new{Text = x.Field<string>("ABC"),Numbers = x.Field<string>("ABC").Split(new string[]{","}, StringSplitOptions.RemoveEmptyEntries).Select(y => Convert.ToInt32(y)).ToList()}).Select(x => new{Text = x.Text,MinVal = x.Numbers.Min(),MaxVal = x.Numbers.Max(),InBetweenVal = x.Numbers.First(y => y>x.Numbers.Min() && y<x.Numbers.Max())}).ToList();Console.WriteLine("Text\tMinVal\tMaxVal\tInBetweenVal");foreach(var r in result){Console.WriteLine("{0}\t{1}\t{2}\t{3}", r.Text, r.MinVal, r.MaxVal, r.InBetweenVal);}Result:Text MinVal MaxVal InBetweenVal205,198,215 198 215 205105,198,315 105 315 198405,298,215 215 405 298305,398,315 305 398 315305,298,415 298 415 305 这篇关于使用LINQ查询获取两个数字之间的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-23 15:10