活字体対C#:LINQ
自然言語クエリのLINQの統合には同等の活字体?次LINQ文の活字体で書くことはできません。
u.Age> = 18がu.Nameを選択するユーザーがUからのvar adultUserNames =;
しかし、IE6 <T>活字体でコア位置LINQ当量(又はシミュレーション)を有する拡張方法。
集計 のすべての 任意の 追加 の平均 キャスト 、連結方式は 含まれてい カウント DefaultIfEmpty 個別 ElementAt ElementAtOrDefaultが 空 を除き まず FirstOrDefault List.ForEach GROUPBY 交差 最終 LastOrDefault マックス ミン OfType のOrderBy / ThenBy リバース セレクト SelectMany シングル SingleOrDefault スキップ SkipWhile 和 ください TakeWhile 連合 ジップ
集計
// C# VAR leftToRight = users.Aggregate(はinitialValue、(U)=> / * ... * /); //活字体 のconst leftToRight = users.reduce((U)=> / * ... * /、はinitialValue)。 constのrightToLeftの= users.reduceRight((U)=> / * ... * /、はinitialValue)。
すべて
// C# VAR出回っ= users.All(U => u.IsReady)。 // TypeScrip tconst出回っ= users.every(U => u.isReady)。
どれか
// C# VAR isDirty = users.Any(U => u.IsDirty)。 //活字体 CONST isDirty = users.some(U => u.isDirty)。
追加
// C# VAR ALLUSERS = users.Append(oneMoreUser)。 //活字体 のconst ALLUSERS = [...ユーザー、oneMoreUser];
平均
// C# VARでAvgAge = users.Average(U => u.Age)。 //活字体 であれば(users.length <1){ (「ソース要素が含まれていない」)新しいエラーを投げます。 } CONSTでAvgAge = users.reduce((U)=> A + u.age、0)/ users.length。
キャスト
C#// VARの人々 = users.Cast <人>(); // typescriptです constの人のユーザーがAS =人[]; //注:.同じわけではありません意味的にANのC#バージョンは、例外がスローされます // IF任意のCANのユーザー「Tは、タイプの人にキャストする。 //注:セマンティクスの違いを。あなたは人の任意のユーザを型にキャストできない場合、C#バージョンは、例外がスローされます。
CONCAT
// C# VAR ALLUSERS = users.Concat(moreUsers)。 //活字体 のconst ALLUSERS = [...ユーザー、... moreUsers]。
含まれています
// C# VAR hasAdmin = users.Contains(管理者)。 //活字体 のconst hasAdmin = users.includes(管理者)。// IEのサポートのためのポリフィルを使用します
カウント
// C#の VAR N = users.Count()。 //活字体の CONST N = users.length。
DefaultIfEmpty
// C# VAR nonEmptyUsers = Enumerable.DefaultIfEmpty(ユーザー); //活字体 のconst nonEmptyUsers = users.length?ユーザー:[ヌル]。
明確な
// C# VAR uniqueNames = users.Select(U => u.Name).Distinct(); //活字体 CONST uniqueNames = Object.keys(users.map(U => u.name).reduce((UN、U)=>({... UN、N})、{}))。
要素
// C# VAR第n = users.ElementAt(N)。 //活字体 (<0 || N> N users.length)場合は{ ( 'インデックスが範囲外でした')新しいエラーを投げます。 } CONST第n =ユーザー[N]。
ElementAtOrDefault
// C# VAR第n = users.ElementAtOrDefault(N)。 //活字体 CONST第n =ユーザー[N]。
空の
C#// ?。するvar noUsers IEnumerable.Empty = <ユーザー>(); // 4.0 NETを見つけることができませんが発見されたDefaultIfEmpty // するvar noUsers IEnumerable.DefaultIfEmpty = <ユーザー>(); // typescriptです constのnoUsers:ユーザー[] = []; CONST noUsers = []ユーザーとして[]。
除きます
// C# VAR maleUsers = users.Except(femaleUsers)。 //活字体 のconst maleUsers = users.filter ( !U => femaleUsers.includes(U)//使用IEのサポートのためのポリフィル(使用IEのサポートのためのポリフィル) );
最初
// C#の 最初= users.First()VAR。 //活字体 であれば(users.length <1){ 新しいエラーを投げる( '配列に要素が含まれていません'); } CONST最初=ユーザー[0]。
FirstOrDefault
// C#の VAR最初= users.FirstOrDefault()。 //活字体が 最初CONST =ユーザー[0]。
List.ForEach
// C# users.ToList()のForEach(U => / * ... * /); //活字体 users.forEach(U => / * ... * /);
GROUPBY
// C# VAR usersByCountry = users.GroupBy(U => u.Country)。 //活字体 CONST usersByCountry = users.reduce((UBC、U)=> ({ ... UBC、 [u.country]:[...(UBC [u.country] || [])、U]、 })、 {})。
交差
// C# VAR targetUsers = usersWhoClicked.Intersect(usersBetween25And45)。 //活字体 のconst targetUsers = usersWhoClicked.filter(U => usersBetween25And45.includes(U)// IEのサポートのためのポリフィルを使用してください)。
最終
// C#の VAR()最後= users.Last。 // TypeScrip TIF(users.length <1){ ( '配列に要素が含まれていない')新しいエラーを投げます。 } CONST最後=ユーザー[users.length - 1]。
LastOrDefault
// C#の VAR()最後= users.LastOrDefault。 //活字体は =ユーザー最後[users.length - 1] CONST。
マックス
// C# VAR oldestAge = users.Max(U => u.Age)。 // TypeScrip TIF(users.length <1){ ( 'ソース要素が含まれていない')新しいエラーを投げます。 } CONST oldestAge = users.reduce((OA、U)=> Math.max(OA、u.age)、0);
私に
// C# VAR youngestAge = users.Min(U => u.Age)。 //活字体 であれば(users.length <1){tは 新しいエラーHROW( 'ソースに要素が含まれていません')。 } CONST youngestAge = users.reduce((YA、U)=> Math.min(YA、u.age)、Number.MAX_VALUE)。
OfType
C#// VAR = users.OfTypeボット<。ボット>(); //リフレッシュ要素タイプに従って // typescriptです //いいえ等価等価
[並べ替え/ ThenBy
// C# VARソート= users.OrderBy(U => u.Age).ThenBy(U => u.Name)。 //活字体 CONSTソート= users.sort((A、B)=> { CONST ageDiff = b.age - a.age; (ageDiff)は場合 ageDiffを返し、 戻りa.name.localeCompare(b.name); // IEをサポートするためのポリフィルを使用 } )。
逆
C#// VAR =後方users.Reverse(); // typescriptです CONST =後方users.reverse(); //注意:!も反転はまた、ユーザーは元の配列を覆しIS
選択する
// C#の VAR名= users.Select(U => u.Name); //活字体の CONST名= users.map(U => u.name);
SelectMany
// C# VARの電話番号= users.SelectMany(U => u.PhoneNumbers)。 //活字体 CONSTの電話番号= users.reduce((PN、U)=> [... PN、... u.phoneNumbers]、[])。
シングル
// C#の VARユーザー= users.Single()。 //活字体 {(users.length> 1)の場合 (「入力シーケンスが複数の要素が含まれている」)新しいエラーを投げます。 }それ以外の場合は{(users.length!) 新しいエラーを投げる(「入力シーケンスが空です」); } CONSTユーザー=ユーザー[0]。
SingleOrDefault
// C#の VARユーザー= users.Single()。 //活字体 CONSTユーザー=ユーザー[0]。
スキップ
// C# VAR otherUsers = users.Skip(N)。 //活字体 CONST otherUsers = users.filter((U、I)=> I> = N)。
SkipWhile
// C# VAR otherUsers = users.SkipWhile(述語)。 //活字体は、 私は0 =ましょう。 一方、(I <users.length &&述語(ユーザ[I ++]))。 CONST otherUsers = users.slice(I - 1)。
和
// C# VAR totalYears = users.Sum(U => u.Age)。 //活字体 であれば(users.length <1){ (「ソース要素が含まれていない」)新しいエラーを投げます。 } CONST totalYears = users.reduce((TY、U)=> TY + U、0);
取る
// C# VAR otherUsers = users.Take(N)。 //活字体 CONST otherUsers = users.filter((U、I)=> I <N)。
TakeWhile
// C# VAR otherUsers = users.TakeWhile(述語)。 //活字体は、 私は0 =ましょう。 一方、(I <users.length &&述語(ユーザ[I ++]))。 CONST otherUsers = users.slice(0、I - 1)。
連合
// C# VAR ALLUSERS = someUser.Union(otherUsers)。 //活字体 CONST ALLUSERS = otherUsers.reduce((AU、U)=> au.includes(U)AU:[... AU、U]})、someUsers)); //使用IEをサポートするためのポリフィル
どこ
// C#の VAR大人= users.Where(U => u.Age> = 18)。 //活字体の CONST大人= users.filter(U => u.age> = 18)。
ジップ
// C#の VARマッチ= buyers.Zip(売り手、(B、S)=>新しい{バイヤー= B、売り手= S})。 //活字体の constの一致= [] ;のために(聞かせて私は= 0;私は<buyers.length &&私は<sellers.lengthを; I ++){ matches.push({買い手:バイヤー[i]は、販売者:[i]の売り手、 }); }
リミテッドは、私を許してください、翻訳が間違っている、と指摘してください。ありがとう
オリジナル住所 https://decembersoft.com/posts/typescript-vs-csharp-linq/