有没有办法简化这个linq表达式,还是有更好的方法来做到这一点?
Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) ||
s.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) ||
s.EndsWith(".png", StringComparison.OrdinalIgnoreCase) ||
...);
Run Code Online (Sandbox Code Playgroud)
基本上我想返回某个扩展名的所有文件.不幸的是,这种方法不是很灵活.我宁愿能够在列表中添加扩展名,并让Directory.GetFiles返回这些扩展名.那可能吗?
我有一个字典对象,<string, string>并希望将其绑定到转发器.但是,我不确定在aspx标记中放置什么来实际显示键值对.没有抛出错误,我可以使用它List.如何在转发器中显示字典?
我正在尝试使用GetFilesAsync迭代目录中的所有文件,但每次调用GetResults方法时,它都会抛出一个异常
System.InvalidOperationException:在意外时间调用了一个方法
代码很简单
var files = myStorageFolder.GetFilesAsync(); //runs fine
var results = files.GetResults(); //throws the exception
Run Code Online (Sandbox Code Playgroud)
我是Win 8 dev的新手,所以我可能会遗漏一些明显的东西.
编辑(已解决)
我正在运行我的控制台应用程序,但现在该程序运行异步,该files.GetResult()方法不再存在.
static void Main(string[] args)
{
var files = GetFiles(myStorageFolder);
var results = files.GetAwaiter().GetResults();//Need to add GetAwaiter()
}
static async Task GetFiles(StorageFolder sf)
{
await sf.GetFilesAsync();
}
Run Code Online (Sandbox Code Playgroud) exception local-storage windows-8 windows-runtime winrt-async
我写了这段代码来查找重复项,它工作正常:
SELECT *
FROM StyleTable
GROUP BY Color
HAVING count(*) > 1
Run Code Online (Sandbox Code Playgroud)
问题是,它只返回一个重复的行.是否可以返回所有重复的行?我猜这可能与'GROUP BY'有关,但我不知道如何改变它.我不想删除值,只返回它们.
我试图在我的.NET项目中引用托管DLL,而不将其复制到我的输出目录中.因此,当我的程序运行时,它会从安装的位置运行DLL - 无论在哪里.问题在于这个托管DLL调用非托管DLL.当我尝试引用托管DLL时,它会抛出一个FileNotFound Exception - Could not load file or assembly 'CharacterGen' or one of its dependencies. The system cannot find file specified.当我将输出设置在与我引用的DLL相同的目录中时,一切正常.通常的解决方案是引用从另一个程序集中调用的DLL.但是,我无法从我的托管程序中引用非托管程序集.
有没有办法引用调用非托管DLL的托管DLL?
我正在使用Twitter API(通过TweetSharp),并想知道是否可以从API自动刷新页面,以便所有用户都能看到更新?如果是这样,是否还可以通过仅部分页面更新来进一步更新,以便仅更新相关更改而不是整个页面?
谢谢你的帮助
我正在尝试创建一个方法,该方法返回用户想要的任何类型的列表.要做到这一点,我使用的是泛型,我不太熟悉,所以这个问题可能很明显.问题是此代码不起作用并抛出错误消息Cannot convert type Systems.Collections.Generic.List<CatalogueLibrary.Categories.Brand> to Systems.Collection.Generic.List<T>
private List<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (List<T>)collection.Brands.ToList<Brand>();
}
...
}
Run Code Online (Sandbox Code Playgroud)
但如果我使用IList,则没有错误.
private IList<T> ConvertToList<T>(Category cat)
{
switch (cat)
{
case Category.Brands:
return (IList<T>)collection.Brands.ToList<Brand>();
}
...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,为什么我可以使用IList而不使用List?collection.Brands BrandCollection从第三方库返回一个类型,所以我不知道它是如何创建的.可能是BrandCollection从IList派生的(只是猜测它确实如此),所以它可以转换为它而不是正常的List?
嘿.我有一个用户可以搜索的项目列表.搜索结果显示在列表框中.每个animal对象都有一个指向隔离存储中图像的路径.将listboxitem中的Image控件绑定到隔离存储中的图像的最快方法是什么?我见过的例子倾向于显示来自互联网的图像而不是隔离存储.如果我有大约10张图像,它似乎会占用所有内存并崩溃.谢谢
编辑:
我在我的BitmapConverter课堂上使用它(继承了IValueConverter)
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value !=null)
{
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(new MemoryStream((Byte[]) value));
return bitmapImage;
}
else
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我把它放在AppResource.xaml文件的顶部:
<ImageApp_Converter:BitmapConverter x:Key="bmpConverter" />
In my style, within the AppResource.xaml file:
<Image HorizontalAlignment="Left" Margin="8,8,0,4" Width="160" Height="120" Source="{Binding Converter={StaticResource bmpConverter}}" />
Run Code Online (Sandbox Code Playgroud)
我在我的BitmapConverter中设置了一个断点,但它从未被调用过.我之前从未使用过IValueConverter,所以任何帮助都会很棒.谢谢
基于这个问题,我尝试使用<codebase>定位外部组件.现在,当我运行该程序时,我收到一条错误消息,指出私有程序集位于appbase之外.我该如何解决这个问题?我看到的一个建议就是签署集会.我做了这个,但后来我的程序找不到程序集.当我取消签名时,我收到outside the appbase错误.如何加载位于其他地方使用<codebase>而不是安装到GAC的程序集?(探测也不起作用,似乎它仍然必须存在于应用程序文件夹中)我的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NGameHost"
culture="neutral" />
<codeBase version="1.0.0.0"
href="C:/Program Files/NetworkGame3/api/NGameHost.exe"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud) c# codebase console-application .net-assembly assembly-signing
我怎样才能找到给定应用程序的命令行参数?我知道你可以使用/?,如果应用程序支持它,它将显示开关,但有没有办法在程序中找到"非官方的"?
windows debugging command-line switch-statement command-line-arguments
c# ×7
.net ×1
asp.net ×1
assemblies ×1
binding ×1
codebase ×1
command-line ×1
data-binding ×1
debugging ×1
dictionary ×1
directory ×1
dll ×1
duplicates ×1
exception ×1
generics ×1
getfiles ×1
group-by ×1
ilist ×1
interface ×1
linq ×1
list ×1
reference ×1
refresh ×1
repeater ×1
select ×1
silverlight ×1
sql ×1
sqlite ×1
twitter ×1
windows ×1
windows-8 ×1
winrt-async ×1