Hur gör man för att få tag på filnamnet på den senast skapade filen i en speciell folder? En enklare lösning med linq: Niklas kod (testad): Är det enklare? Att jag sa att det var "enklare" var mest en liten pik till att du sa samma sak i ditt meddelande. Verkade som du menade att det var enklare bara för att det var kortare. Alltså är mitt sätt ännu enklare (kortare). > Jag tror inte många C#-programmerare tycker det är enklare att skriva det med linq än vanlig C#-kod, eftersom många aldrig stött på linq =) <b>>Verkade som du menade att det var enklare bara för att det var kortare.</b> > Nej då, det jag menar är att komplexiteten (för programmeraren) är mindre - ingen loop, inget att hålla reda på. C# (78 tkn)Filnamnet på den senanst skapade filen
Sv: Filnamnet på den senanst skapade filen
FileInfo latestFile = null;
foreach (FileInfo file in new DirectoryInfo(@"c:\test").GetFiles("*.*"))
if (latestFile == null || file.CreationTime > latestFile.CreationTime)
latestFile = file;
MessageBox.Show(latestFile.Name);
/André
Sv: Filnamnet på den senanst skapade filen
<code:c#>
FileInfo latestFile =
(from file in new DirectoryInfo(@"c:\test").GetFiles("*.*")
orderby file.CreationTime
select file).First();
</code>
(möjligtvis "descending" eller "ascending" efter CreationTime för att vända på det, koden otestad)Sv:Filnamnet på den senanst skapade filen
FileInfo latestFile =
(from file in new DirectoryInfo(@"c:\").GetFiles() orderby file.CreationTime descending select file).First();
Men om man ska linqa, kan man göra det ännu enklare:
FileInfo latestFile =
(new DirectoryInfo(@"c:\").GetFiles().OrderByDescending(file => file.CreationTime)).First();
Sv: Filnamnet på den senanst skapade filen
Du använder ju bara själva funktionsanropen, dvs inte LINQ per se?
Koderna är ju ekvivalenta - jag skulle gissa att koden kompileras till exakt samma CIL? Sv:Filnamnet på den senanst skapade filen
Jag tror inte många C#-programmerare tycker det är enklare att skriva det med linq än vanlig C#-kod, eftersom många aldrig stött på linq =)Sv: Filnamnet på den senanst skapade filen
Jag har precis börjat, och jag tycker linq är enklare :)
Anonyma delegater var ju en fröjd när det kom, men nu med Expression<>, Linq, anonyma klasser och var är det kalas :)
Exempel med Linq och anonyma klasser (med Subsonic som ORM):
var allDuplicateLeases = from l in db.Leases
group l by l.UserId into la
select new
{
UserId = la.Key,
Count = la.Count()
};
(Lease har en m:1 relation till User, får här fram antal Lease som refererar till varje User så jag kan plocka bort dubbletter)
Sv: Filnamnet på den senanst skapade filen
Nej då, det jag menar är att komplexiteten (för programmeraren) är mindre - ingen loop, inget att hålla reda på.
När jag började med linq föredrog jag funktionsanropen, nu kör jag mer med "proper linq". Jag är tvingad (=)) till att arbeta i VB.NET i min vardag, och där är linqstödet något sämre.
För mig känns "proper linq" vs "funktions-linq" likadant som "properties" vs "get/set-funktioner" eller "events" vs "observer pattern".Sv:Filnamnet på den senanst skapade filen
Jag håller med om att det kan vara lättare. Och även snyggare. Men bara om du kan och har använt linq tidigare. Utan manual och exempel är det nog inte enklare för den som aldrig sett syntaxen.
Det blev väldigt kort kod för att lösa problemet i alla fall. Intressant hade det varit om nån kunde presentera en ännu kortare lösning. Som en utmaning. Antingen i C# eller valfritt annat språk (med standardbibliotek).Sv: Filnamnet på den senanst skapade filen
var l = (new DirectoryInfo("c:/").GetFiles().OrderBy(f => f.CreationTime)).Last();