![](/img/trans.png)
[英]How do I check for the existence of a character in a Linq query on a CSV file?
[英]How do I Check previous data in LINQ?
我有一組數據,用於檢查特定字段中是否有更改以獲取另一列的總和。
Total = Details.Where(s=>s.indicator != *prior indicator before this...).Sum(s => s.amount);
我不認為LINQ本身可以使您在更改數據之前獲得狀態。 我想您可以做的是在數據將要更改時設置一個事件(OnChanging)並訂閱該事件,然后在事件參數更改之前發送金額。
現在,如果您希望以LINQ方式進行所有操作,則應查看MS正在處理的Rx(響應)API,有關以LINQ方式使用事件的所有信息。
如果使用的集合會通知您元素中的更改。那么可能會傳遞一個參數,告訴您更改的數據。
您可以使用部分類,然后使用OnFIELDChanging事件檢測更改並在其他位置調用事件。
因此,如果您的.dbml文件中有一個User表,該表具有名為firstName的屬性,則可以創建另一個這樣的類;
public partial class User
{
partial void OnFirstNameChanging(string value)
{
}
}
傳遞的值是屬性更改為的新值。
這是否對您的要求有所幫助?
如果您有兩個數據集合,則可以使用zip方法(.Net 4.0),如下所示
var Total = currentData.Zip(previousData,(current,previous) => current.indicator != previous.indicator ? current.amount : 0).Sum();
如果您不使用.net 4.0,則可以使用以下zip實現:
static class Enumerable
{
public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(this IEnumerable<TFirst> first, IEnumerable<TSecond> second, Func<TFirst, TSecond, TResult> func)
{
var ie1 = first.GetEnumerator();
var ie2 = second.GetEnumerator();
while (ie1.MoveNext() && ie2.MoveNext())
yield return func(ie1.Current, ie2.Current);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.