にあるこの問題がありcolumn
ますSQL table
。値はcomma separated
形式です。
元:
1) facebook,google,just giving, news letter, in-store
2) facebook,google,just giving
3) just giving
4) facebook
5) google
6) in-store,email
7) email,facebook
今、私はそのテーブルを照会し、リストに個別の値とその数が含まれているリストでこの値を取得したいと考えています。
元:
1) facebook - 10
2) email - 20
3) in-store -5
and so on....
LINQを使用してこれを達成する方法はありますか?
注:私のデータソースは ' entries'
LINQ(.NET 2.0に組み込まれている)をサポートしていないため、LIST変数のLINQ演算子で作業できます
var results = new List<string>();
var builder = new StringBuilder();
foreach (var entry in entries.Cast<MWCompetitionsEntry>().Where(entry => entry.HowFound != null))
{
builder.Append(entry.HowFound).Append(",");
}
results.Add(builder.ToString());
私が得ている結果
facebook,email,in-store,google,in-store,newsletter,facebook,email,facebok
編集:
これで、変数を操作できresults
ます。その変数とそのカウントから一意の値を取得する方法がわかりません。
助けてください
答え
var values = new List<string>();
var builder = new StringBuilder();
var howFoundValues = new List<string>{"Email", "Facebook", "Twitter", "Leaflet", "Just Giving", "In-Store", "Other"};
foreach (var entry in entries.Cast<MWCompetitionsEntry>().Where(entry => entry.HowFound != null))
{
builder.Append(entry.HowFound).Append(",");
}
values.Add(builder.ToString());
var result1 = values.SelectMany(l => l.Split(','))
.Where(howFoundValues.Contains) //will disregard any other items
.GroupBy(e => e)
.Select(e => String.Format("{0} - {1}",e.Key, e.Count()))
.ToList();