System.Linq
class Program
{
static void Main( string[ ] args )
{
SumEx1( );
}
class package
{
public string Company { get; set; }
public double weight { get; set; }
}
public static void SumEx1( )
{
List<package> pack = new List<package>
{ new package {Company = "aaa",weight=11.00},
new package {Company = "bbb",weight=22.00},
new package { Company = "Wingtip Toys", weight = 33.00 },
new package { Company = "Adventure Works", weight = 44.00 } };
//string.Sum()方法,合计数字类型总和。
double totalWeight = pack.Sum( p => p.weight );
Console.WriteLine( totalWeight);
// Contains() 方法,是否在子字符串里出现过,为true,则只显示此字符串。
IEnumerable<package> var = from num in pack where num.Company.Contains("aaa") select num;
foreach ( package item in var )
{
Console.WriteLine( item.Company);
Console.WriteLine( item.weight );
}
}
}
namespace Console_linq2
{
class Program
{
struct MyStruct
{
public string name;
public int age;
private string p;
public MyStruct( string p )
{
this.p = "a";
name = "张三";
age = 21;
}
}
static void Main( string[ ] args )
{
stringQueryFunction( );
IntQueryFunction( );
LinqToSqlFunction( );
StructFunction( );
ArrayReverse( );
ListReverse( );
ToListFunction( );
}
private static void ToListFunction( )
{
//int[ ] age = new int[ ] { 34, 54, 76, 57, 54, 6, 3, 53 };
string[ ] fruits = { "apple", "passionfruit", "banana", "mango",
"orange", "blueberry", "grape", "strawberry" };
Console.WriteLine( "ToList()之前:" );
foreach ( string item in fruits )
{
Console.WriteLine( item);
}
Console.WriteLine( "ToList()之后aaaa:" );
//ToList()方法,位数组的每个元素计算个数
List<int> lengths = fruits.Select( fruit => fruit.Length ).ToList( );
foreach ( int item in lengths )
{
Console.WriteLine( item);
}
Console.WriteLine( );
}
private static void ListReverse( )
{
Console.WriteLine( "LastOrDefault( )的使用:" );
//LastOrDefault( ) 返回列表中的最后一个元素
string[ ] fruits = { "aa", "bb", "cc", "dd" };
string last = fruits.LastOrDefault( );
Console.WriteLine(
String.IsNullOrEmpty( last ) ? "<string is null or empty>" : last );
/*
This code produces the following output:
<string is null or empty>
*/
Console.WriteLine( "List<int>泛型倒序:");
List<int> list = new List<int>( );
list.Add( 23 );
list.Add( 4 );
list.Add( 34 );
list.Add( 8 );
list.Add( 3 );
list.Add( 5 );
list.IndexOf( 34 );
Console.WriteLine( "排序之前:");
for ( int i = 0; i < list.Count; i++ )
{
Console.WriteLine( list[i]);
}
list.Sort( );
Console.WriteLine( "排序之后:");
foreach ( int item in list )
{
Console.WriteLine( item );
}
Console.WriteLine( );
Console.WriteLine( "倒序之后:");
list.Reverse( );
foreach ( int item in list )
{
Console.WriteLine( item);
}
}
private static void ArrayReverse( )
{
int[ ] inta = { 34, 6, 58, 53, 6 };
Console.WriteLine( "给inta[]排序");
for ( int i = 0; i < inta.Length; i++ )
{
for ( int j = 0; j < inta.Length-i-1; j++ )
{
if ( inta[j] < inta[j+1] )
{
int tmp = inta[ j + 1 ];
inta[ j + 1 ] = inta[ j ];
inta[ j ] = tmp;
}
}
Console.WriteLine( inta[i]);
}
}
private static void StructFunction( )
{
MyStruct m = new MyStruct( );
string[] message = { "aaa", "ddd" };
Console.WriteLine( " IEnumerable<MyStruct>:" );
IEnumerable<MyStruct> query = from c in message where c != null orderby c select new MyStruct
( m.name = c.ToString() );
foreach ( var item in query )
{
Console.WriteLine( item.age+"\t"+ item.name );
}
}
private static void LinqToSqlFunction( )
{
List<double> quantity = new List<double> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
List<double> quantity1 = new List<double> { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
List<string> str = new List<string> { "a", "c", "d", "e", "f", "g", "h" };
List<string> str1 = new List<string> { "a", "c", "d", "e", "f", "g", "h" };
var query = from q in quantity
select q;
Console.WriteLine( "Avg:" );
Console.WriteLine( query.Average( ) );
Console.WriteLine( "count:" );
Console.WriteLine( query.LongCount( ) );//计算元素总量
Console.WriteLine( "int64count" );
Console.WriteLine( query.Count( ) );//计算元素总量
Console.WriteLine( "Max:" );
Console.WriteLine( query.Max( ) );//计算元素最大值
Console.WriteLine( "Min:" );
Console.WriteLine( query.Min( ) );//计算元素最小值
Console.WriteLine( "sum:" );
Console.WriteLine( query.Sum( ) );//计算元素总和
double average = quantity.Average( );//计算平均值
Console.WriteLine( "avg:" );
Console.WriteLine( average );
IEnumerable<double> avl = quantity.Distinct( );
Console.WriteLine( "List:" );
foreach ( double item in avl )
{
Console.WriteLine( item );
}
Console.WriteLine( );
Console.WriteLine( "将两个集合通过 Union 方法联合之后显示,Union方法只显示不重复的数据:" );
var inion2 = str.Union( str1 );
foreach ( var item in inion2 )
{
Console.Write(item+" " );
}
Console.WriteLine( );
IEnumerable<double> union = quantity.Union( quantity1 );
foreach ( double item in union )
{
Console.Write( item + " " );
}
Console.WriteLine( );
Console.WriteLine( "Intersect【出现多少个重复】:" );
IEnumerable<double> Intersects = quantity.Intersect( quantity1 );
foreach ( double item in Intersects )
{
Console.Write( item+" " );
}
Console.WriteLine( );
Console.WriteLine( "Except【出现多少个不重复】:" );
IEnumerable<double> Excepts = quantity.Except( quantity1 );
foreach ( double item in Excepts )
{
Console.Write( item + " " );
}
Console.WriteLine( );
Console.WriteLine( "Range方法的使用:3,表示从数字3开始,10,表示10个数字" );
var coolmath1 = Enumerable.Range( 3, 10 ).Reverse( );
foreach ( int item in coolmath1 )
{
Console.Write( item+" " );
}
Console.WriteLine( );
Console.WriteLine( "Select( x => x * 5 ) x表示集合中的每一个数字:" );
var coolmath = Enumerable.Range( 3, 10 ).Select( x => x * 5 );
foreach ( int item in coolmath )
{
Console.Write( item+" " );
}
}
private static void stringQueryFunction( )
{
string[ ] name = { "赵丽蓉", "马季", "侯耀文", "马三立", "侯宝林", "乔布斯" };
//模糊查询
//IEnumerable<string> val = from num in name where num.StartsWith( "马" ) select num;
//排序
IEnumerable<string> val = from num in name orderby num select num;
var mum = (from m in name select m).First();
Console.WriteLine( "var First()返回指定的条件:" );
foreach ( var item in mum )
{
Console.WriteLine( item);
}
Console.WriteLine( "+++++++++++++++++");
foreach ( var item in val )
{
Console.WriteLine( item );
}
}
private static void IntQueryFunction( )
{
int[ ] age = new int[ ] { 5, 6, 78, 45, 4, 768, 899, 67, 5, 900 };
var numQuery = from num in age where num > 800 && num <= 900 select num;
IEnumerable<int> query = ( from c in age orderby c select c ).Take( 4 );
Console.WriteLine( "Take( 4 )指定出现4个" );
foreach ( var item in query )
{
Console.WriteLine( item);
}
Console.WriteLine("=============================");
Console.WriteLine( );
Console.WriteLine( "age where num > 800 && num <= 900的有: " );
foreach ( var item in numQuery )
{
Console.Write( "{0} ", item );
}
Console.WriteLine( );
}
}
}