活字体対C#:LINQ

活字体対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/

  

    

おすすめ

転載: www.cnblogs.com/zhongzw/p/11824821.html