我在这里努力学习LINQ语法...以为我会把它丢在这里.我无法找到我正在寻找的其他地方.
好吧,说我有这个:
public class Bar
{
public int BarId { get; set; }
}
public class Foo
{
public List<Bar> BarList { get; set; }
}
List<Foo> fooBunch = GetABunchOfFoos(); //let's just assume I'm getting more than one
List<Foo> fooSelect = new List<Foo>;
List<Bar> filterBars = GetAFewBars(); //assume I'm getting like 2 or 3
fooSelect = (from f in fooBunch
where !(from b in f.BarList select b.BarId).Contains(ITEM FROM filterBars.BarId)
select f).ToList();
Run Code Online (Sandbox Code Playgroud)
所以,长话短说我想使用LINQ根据另一个列表中的对象过滤掉我的对象列表.我希望这是有道理的.我想我只是迷失在Contains部分......我不知道怎么写.
我将在这里提出几个问题...首先,使用NuGet可以从几个DLL创建一个包吗?没有visual studio项目,只有命令行和一些预编译的DLL文件.
第二,假设这是可能的,为什么我不断得到"lib文件夹之外的程序集"警告?我已经尝试了所有我能想到的关联程序集将自己添加为NuGet包内的引用.
我的文件结构如下所示
Root
- File1.dll
- lib
- File2.dll
- File3.dll
Run Code Online (Sandbox Code Playgroud)
当我告诉NuGet使用像这样的.nuspec打包它
<?xml version="1.0"?>
<package >
<metadata>
<id>File1.dll</id>
<version>1.0.0</version>
<authors>thisguy</authors>
<owners>thisguysmom</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>This is some library</description>
<releaseNotes>Porting to NuGet</releaseNotes>
<copyright>Copyright 2012</copyright>
<references>
<reference file="File2.dll" />
<reference file="File3.dll" />
</references>
</metadata>
</package>
Run Code Online (Sandbox Code Playgroud)
我收到了警告.从我正在阅读的内容来看,我甚至不必在任何项目中定义引用节点,因为lib文件夹项应该自动添加为引用?
有没有人了解这个NuGet一塌糊涂?
我一直在寻找,我很有信心这是一个新问题,而不是像标题所暗示的重复.:)
基本上,我正在尝试找出KnockoutJS在使用jQuery模板之类的模板渲染后创建的可订阅事件.
我使用内置的"afterRender",但我发现如果清除了可观察数组,它就不会触发.我构建了这个演示来说明这个问题:http://jsfiddle.net/farina/YWfV8/1/.
另外,我知道我可以写一个自定义处理程序......但这对我需要的东西来说似乎没必要.
我只想在模板完成渲染后触发一个事件.
我试图弄清楚Visual Studio Productivity Power Tools设置的存储位置.我最近搬到了一个新的visual studio实例,我丢失了所有的Power Tools正则表达式选项卡着色设置.它们显然不是正常VS2010设置文件的一部分,因为我已经导出并导入了它.任何帮助都会很棒!
有没有人有提示,而你可以动态调整字体大小以适应特定区域?例如,我有一个800x110的矩形,我想用最大尺寸字体填充它,这将支持我试图显示的整个字符串.
Bitmap bitmap = new Bitmap(800, 110);
using (Graphics graphics = Graphics.FromImage(bitmap))
using (Font font1 = new Font("Arial", 120, FontStyle.Regular, GraphicsUnit.Pixel))
{
Rectangle rect1 = new Rectangle(0, 0, 800, 110);
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
graphics.DrawString("Billy Reallylonglastnameinstein", font1, Brushes.Red, rect1, stringFormat);
}
bitmap.Save(Server.MapPath("~/Fonts/" + System.Guid.NewGuid() + ".png"));
Run Code Online (Sandbox Code Playgroud)
显然,整个名称不会在大字体大小提供的空间中呈现.必须有一个简单的方法来做到这一点?
KnockoutJS是否有功能,而我可以采取以下方式:
var myArray = ko.observableArray([
{ name: "Jimmy", type: "Friend" },
{ name: "George", type: "Friend" },
{ name: "Zippy", type: "Enemy" }
]);
Run Code Online (Sandbox Code Playgroud)
然后在"type"字段上选择distinct,产生如下所示的结果:
(pseudo code)
var distinct = myArray.distinct('type')
// Returns array of two arrays
// distinct[0] is an array of type=Friend
// distinct[1] is an array of type=Enemy
Run Code Online (Sandbox Code Playgroud)
我知道ko.utils.arrayGetDistinctValues,但这并不完全符合我的要求.我也知道我可以使用ko.utils.arrayGetDistinctValues写几个循环来得到我想要的东西,我只是想知道是否还有其他东西被KnockoutJS烘焙,我忽略了.
我的视图模型返回一个真值,我正在尝试让我的模板相应地添加CSS.问题是,我找不到!= true的语法.
我有这样的事情:
<div data-bind="css: {'lw-touched': checked, 'lw-touch': !checked}"></div>
Run Code Online (Sandbox Code Playgroud)
我认为会说,如果选中'= true,则应用'lw-touching',如果选中=== false,则应用'lw-touch'.但这不起作用:(.所以我试过这个:
<div data-bind="css: {'lw-touched': checked, 'lw-touch': checked !== true}"></div>
Run Code Online (Sandbox Code Playgroud)
哪个也行不通.
我确定有办法做到这一点!我现在找不到它.
在KnockoutJS中,每次运行AJAX命令时,更新observableArray的JSON数据的正确方法是什么?
现在,我使用viewmodel.items([])之类的东西来消隐数组,然后用来自服务器的JSON数据重新填充它.没有使用KnockoutJS映射插件(这可能是唯一的方法),正确的路径是什么?
我的服务器逻辑每次都会发送一些相同的数据,所以我不能只是迭代并将项目推送到数组中,除非我想要重复.
////添加我今天的表现////
我不知道为什么我这样做,但这就是我最初想出如何更新的方式.所以基本上,就像我之前说过的,我得到JSON数据,然后我把它传递给这样的东西:
_model.addIncident = function (json) {
var checked = json.UserTouches > 0 ? true : false;
_model.incidents.push({
id: ko.observable(json.IncidentIDString),
lastTouchId: ko.observable(json.UserLastTouchIDString),
weight: ko.observable(json.Weight),
title: ko.observable(json.Title),
checked: ko.observable(checked),
createdOn: ko.observable(json.IncidentCreatedOn),
servicename: ko.observable(json.Servicename),
inEdit: ko.observable(false),
incidentHistory: ko.observableArray(),
matchScore: ko.observable()
});
};
Run Code Online (Sandbox Code Playgroud)
对于JSON数组中的每个节点.正如您所看到的,我在那里有一些自定义的observable,可以使用每个传递的数据进行构建.也许这是错误的方式,但直到现在它仍然很好用.
是否有可能在映射过程中修改对象(缺少更好的术语)模式?我想是的,我似乎无法让它发挥作用.我正在尝试这样的事情:
var data = {
itemOne: 'someData',
itemTwo: 'moreData'
}
var mapping = {
"newItem": {
create: function(options) {
return ko.observable(false);
}
}
};
ko.mapping.fromJS(data, mapping, _model.observableArrayPart);
Run Code Online (Sandbox Code Playgroud) 所以,我已经在我的解决方案上启用了包恢复 - Install-Package NuGetEnablePackageRestore
我在TFS Build Server上安装并更新了NuGet
我在TFS Build Server上创建了环境变量 - http://www.centrolutions.com/blog/post/2012/07/05/NuGet-and-TFS-2010-Automated-Build.aspx
我删除了所有的packages.config文件,并在每个项目上重新开始.
我已将.nuget文件夹路径添加到构建作业,以及已定义的构建代理文件夹
我几乎已经完成了我的绞索,并计划在黎明时挂起自己...有什么我想念的吗?
忘了提出TFS Build错误
C:\ Builds\10 ....... nuget \nuget.targets(76):默认情况下禁用包恢复.要同意,请打开Visual Studio选项对话框,单击程序包管理器节点,然后选中"允许NuGet在构建期间下载缺少的程序包".您还可以通过将环境变量"EnableNuGetPackageRestore"设置为"true"来表示同意.
和
C:\ Builds\10 ....... nuget \nuget.targets(76):命令""C:\ Builds\10 ....... nuget \nuget.exe"install"C:\构建\ 10 ......\packages.config"-source"" - o"C:\ Builds\10 ......\packages""以代码-1退出.
删除了完整的安全路径.
发现:
我的TFS管理员将环境变量设置为USER变量!我只是想我会让她告诉我她是如何配置的,一旦她这样做,我意识到这是错误的.
我不再收到包恢复错误...哇!然而,我得到"无法找到版本"错误,这让我觉得TFS盒子不知道正确的包源.我已经验证了可以从TFS构建框访问包源,我也在该框中配置了NuGet以引用包共享.
没有包服务器可以做到这一点吗?我一直在为我的所有本地版本使用文件共享,但我想知道规则在到达TFS框时是否会发生变化.我是否需要在Nuget.config文件中定义我的包源?