第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 LINQ 查詢外部數(shù)據(jù)源

使用 LINQ 查詢外部數(shù)據(jù)源

C#
慕容3067478 2021-10-24 14:06:47
我存儲(chǔ)的內(nèi)容基本上相當(dāng)于存儲(chǔ)在 CSV 文件中的日志數(shù)據(jù)。它的格式<datetime>,<val1>,<val2>,等。但是,日志文件按帳戶 ID 和月份存儲(chǔ),因此如果您跨月份或帳戶 ID 查詢,您將檢索多個(gè)文件。我希望能夠使用 LINQ 查詢它,這樣如果我可以調(diào)用logFiles.Where(o => o.Date > 1-1-17 && o.Date < 4-1-17). 我想我需要一些東西來(lái)檢查該查詢中的日期范圍,并注意到它跨越 4 個(gè)月,然后導(dǎo)致它只檢查該日期范圍內(nèi)的文件。有什么方法可以做到這一點(diǎn),而不涉及使用自定義IQueryable LINQ 提供程序弄臟我的手?如有必要,我可以進(jìn)入那個(gè)兔子洞,但我想首先確保它是正確的兔子洞。
查看完整描述

1 回答

?
守著一只汪

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果您想在同一Where表達(dá)式中同時(shí)過(guò)濾日志文件名和日志文件內(nèi)容,我看不到沒有自定義IQueryableLINQ 提供程序的解決方案,因?yàn)檫@正是它們的用例:以智能方式訪問(wèn)數(shù)據(jù)方式基于LINQ 查詢中使用的表達(dá)式

也就是說(shuō),使用多步驟方法作為折衷方案可能是值得的:

  1. 使用LINQ限制要搜索的日志文件,

  2. 讀取文件和

  3. 使用 LINQ 進(jìn)行進(jìn)一步搜索。

例子:

IEnumerable<LogFile> files = LogFiles.Where(f => f.Date > new DateTime(17, 1, 1) && f.AccountID == 4711);

IEnumerable<LogData> data = ParseLogFiles(files);

IEnumerable<LogData> filteredData = data.Where(d => d.val1 == 42 && d.val2 > 17);

LogData firstMatch = filteredData.FirstOrDefault();

如果您實(shí)現(xiàn)ParseLogFiles(a) 延遲執(zhí)行和 (b) 作為 上的擴(kuò)展方法IEnumerable<LogFile>,則生成的代碼將在外觀上與純 LINQ 非常相似:


var filteredData = LogFiles.

    Where(f => f.Date > new DateTime(17, 1, 1) && f.AccountID = 4711).

    ParseLogFiles().

    Where(d => d.val == 42 && d.val2 > 17);


// If ParseLogFiles uses deferred execution, the following line won't read

// more log files than required to get the first matching row:

var firstMatch = filteredData.First();

這比在一個(gè) LINQ 查詢中包含所有內(nèi)容要多一些工作,但它使您不必實(shí)現(xiàn)自己的 LINQ 提供程序。


查看完整回答
反對(duì) 回復(fù) 2021-10-24
  • 1 回答
  • 0 關(guān)注
  • 181 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)